{"record":{"id":"51df1534235a7bcb","repo":"reflex-dev/reflex","slug":"children-in-fn-name-cannot-be-an-rx-eventha","errorCode":null,"errorMessage":"`children` in `{fn_name}` cannot be an `rx.EventHandler`; use `rx.Var[rx.Component]`.","messagePattern":"`children` in `(.+?)` cannot be an `rx\\.EventHandler`; use `rx\\.Var\\[rx\\.Component\\]`\\.","errorType":"exception","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"packages/reflex-base/src/reflex_base/components/memo.py","lineNumber":961,"sourceCode":"        msg = f\"`children` in `{fn_name}` cannot be `rx.RestProp`.\"\n        raise TypeError(msg)\n\n\ndef _validate_event_trigger(\n    parameter: inspect.Parameter, fn_name: str, for_component: bool\n) -> None:\n    if not for_component:\n        msg = (\n            f\"`rx.EventHandler` parameters are only supported on component-\"\n            f\"returning memos. Got `{parameter.name}` in `{fn_name}`.\"\n        )\n        raise TypeError(msg)\n    if parameter.name == \"children\":\n        msg = (\n            f\"`children` in `{fn_name}` cannot be an `rx.EventHandler`; \"\n            \"use `rx.Var[rx.Component]`.\"\n        )\n        raise TypeError(msg)\n    if parameter.default is not inspect.Parameter.empty:\n        msg = (\n            f\"`rx.EventHandler` parameter `{parameter.name}` in `{fn_name}` \"\n            \"must not have a default value.\"\n        )\n        raise TypeError(msg)\n\n\ndef _placeholder_name_value(name: str, js_prop_name: str, for_component: bool) -> str:\n    return js_prop_name + CAMEL_CASE_MEMO_MARKER if for_component else name\n\n\ndef _placeholder_name_passthrough(\n    name: str, js_prop_name: str, for_component: bool\n) -> str:\n    return name\n\n","sourceCodeStart":943,"sourceCodeEnd":979,"githubUrl":"https://github.com/reflex-dev/reflex/blob/45b8ed5ab735f8a56bbb09a42384f030eb0208e7/packages/reflex-base/src/reflex_base/components/memo.py#L943-L979","documentation":"In a component-returning `@rx.memo`, the reserved `children` slot was annotated as `rx.EventHandler`. The children slot must be `rx.Var[rx.Component]` because it receives rendered child elements, not an event callback. Reflex raises this TypeError at decoration time during event-trigger validation.","triggerScenarios":"Declaring `def my_memo(children: rx.EventHandler) -> rx.Component` — the parameter is named `children` but annotated `rx.EventHandler` instead of `rx.Var[rx.Component]`.","commonSituations":"Confusing the children slot with an event trigger; wanting a callback when children render and reaching for the wrong annotation; auto-generated signatures that annotate every callable prop as EventHandler.","solutions":["Annotate `children` as `rx.Var[rx.Component]`","If a callback is needed, add a separately named `rx.EventHandler` parameter (e.g. `on_click: rx.EventHandler`)"],"exampleFix":"// before\n@rx.memo\ndef dialog(children: rx.EventHandler) -> rx.Component:\n    ...\n\n// after\n@rx.memo\ndef dialog(children: rx.Var[rx.Component], on_close: rx.EventHandler) -> rx.Component:\n    ...","handlingStrategy":"validation","validationCode":"import inspect, typing, reflex as rx\n\ndef check_children_annotation(fn) -> None:\n    hints = typing.get_type_hints(fn)\n    if hints.get(\"children\") is rx.EventHandler:\n        raise TypeError(\"children must be rx.Var[rx.Component], not rx.EventHandler\")","typeGuard":"import typing, reflex as rx\n\ndef children_slot_ok(fn) -> bool:\n    hints = typing.get_type_hints(fn)\n    ch = hints.get(\"children\")\n    return ch is None or (typing.get_origin(ch) is rx.Var and rx.Component in typing.get_args(ch))","tryCatchPattern":null,"preventionTips":["Treat `children` as a component slot, never a callback","Name event triggers with on_* prefixes (on_click, on_close)"],"tags":["reflex","rx-memo","typeerror","children","event-handler"],"backgroundTag":"decorator-validation-failed","analyzedSha":"45b8ed5ab735f8a56bbb09a42384f030eb0208e7","analyzedAt":"2026-08-28T19:25:27.644Z","schemaVersion":2},"datasetVersion":"2026-08-28T21:17:43.275Z"}