add type conversion for int,float in built-in setters (#1660)

This commit is contained in:
Thomas Brandého 2023-08-23 10:10:51 +02:00 committed by GitHub
parent 6c80a0f1eb
commit 57855f56a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -30,7 +30,7 @@ from pydantic.fields import ModelField
from reflex import constants
from reflex.base import Base
from reflex.utils import format, types
from reflex.utils import console, format, types
if TYPE_CHECKING:
from reflex.state import State
@ -831,7 +831,16 @@ class BaseVar(Var, Base):
state: The state within which we add the setter function.
value: The value to set.
"""
setattr(state, self.name, value)
if self.type_ in [int, float]:
try:
value = self.type_(value)
setattr(state, self.name, value)
except ValueError:
console.warn(
f"{self.name}: Failed conversion of {value} to '{self.type_.__name__}'. Value not set.",
)
else:
setattr(state, self.name, value)
setter.__qualname__ = self.get_setter_name()