Explorar el Código

Initialize an EventHandler for dynamic vars (#808)

Ben Guidarelli hace 2 años
padre
commit
65dc2fe80e
Se han modificado 1 ficheros con 6 adiciones y 2 borrados
  1. 6 2
      pynecone/state.py

+ 6 - 2
pynecone/state.py

@@ -192,7 +192,9 @@ class State(Base, ABC, extra=pydantic.Extra.allow):
         events = {
             name: fn
             for name, fn in cls.__dict__.items()
-            if not name.startswith("_") and isinstance(fn, Callable)
+            if not name.startswith("_")
+            and isinstance(fn, Callable)
+            and not isinstance(fn, EventHandler)
         }
         cls.event_handlers = {name: EventHandler(fn=fn) for name, fn in events.items()}
         for name, event_handler in cls.event_handlers.items():
@@ -364,7 +366,9 @@ class State(Base, ABC, extra=pydantic.Extra.allow):
         """
         setter_name = prop.get_setter_name(include_state=False)
         if setter_name not in cls.__dict__:
-            setattr(cls, setter_name, prop.get_setter())
+            event_handler = EventHandler(fn=prop.get_setter())
+            cls.event_handlers[setter_name] = event_handler
+            setattr(cls, setter_name, event_handler)
 
     @classmethod
     def _set_default_value(cls, prop: BaseVar):