Răsfoiți Sursa

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

Thomas Brandého 1 an în urmă
părinte
comite
57855f56a1
1 a modificat fișierele cu 11 adăugiri și 2 ștergeri
  1. 11 2
      reflex/vars.py

+ 11 - 2
reflex/vars.py

@@ -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()