diff --git a/pynecone/state.py b/pynecone/state.py index da67fb802..e93497a0f 100644 --- a/pynecone/state.py +++ b/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):