{"record":{"id":"8096fc7c00f551e9","repo":"reflex-dev/reflex","slug":"rx-eventhandler-parameter-parameter-name-in","errorCode":null,"errorMessage":"`rx.EventHandler` parameter `{parameter.name}` in `{fn_name}` must not have a default value.","messagePattern":"`rx\\.EventHandler` parameter `(.+?)` in `(.+?)` must not have a default value\\.","errorType":"exception","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"packages/reflex-base/src/reflex_base/components/memo.py","lineNumber":967,"sourceCode":") -> 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\ndef _make_value_placeholder(param: MemoParam) -> Var:\n    return _var_placeholder(param.placeholder_name, param.annotation)\n\n\ndef _make_rest_placeholder_spec(param: MemoParam) -> RestProp:\n    return _rest_placeholder(param.placeholder_name)","sourceCodeStart":949,"sourceCodeEnd":985,"githubUrl":"https://github.com/reflex-dev/reflex/blob/45b8ed5ab735f8a56bbb09a42384f030eb0208e7/packages/reflex-base/src/reflex_base/components/memo.py#L949-L985","documentation":"An `rx.EventHandler` parameter in a component-returning `@rx.memo` was given a default value. Event triggers must always be supplied explicitly by the caller so the compiler can generate the prop wiring; defaults would create silently dead triggers. Reflex raises this TypeError at decoration time.","triggerScenarios":"Declaring something like `def my_memo(on_click: rx.EventHandler = rx.event(lambda: None)) -> rx.Component` — the parameter's `default` is not `inspect.Parameter.empty` when `_validate_event_trigger` inspects it.","commonSituations":"Copy-pasting a plain function with keyword defaults into a memo; IDE autocompletion inserting a no-op default; trying to make an event prop 'optional' like a normal value prop.","solutions":["Remove the default value from the `rx.EventHandler` parameter so callers must pass it","If the event is genuinely optional, handle optionality at the call site (pass a no-op handler explicitly) or accept `rx.Var[bool]`/optional props instead"],"exampleFix":"// before\n@rx.memo\ndef item(text: rx.Var[str], on_click: rx.EventHandler = rx.event(no_op)) -> rx.Component:\n    ...\n\n// after\n@rx.memo\ndef item(text: rx.Var[str], on_click: rx.EventHandler) -> rx.Component:\n    ...","handlingStrategy":"validation","validationCode":"import inspect, reflex as rx\n\ndef check_handler_defaults(fn) -> None:\n    for p in inspect.signature(fn).parameters.values():\n        if p.annotation is rx.EventHandler and p.default is not inspect.Parameter.empty:\n            raise TypeError(f\"rx.EventHandler param {p.name!r} must not have a default\")","typeGuard":"import inspect, reflex as rx\n\ndef handler_params_have_no_defaults(fn) -> bool:\n    return all(\n        p.default is inspect.Parameter.empty\n        for p in inspect.signature(fn).parameters.values()\n        if p.annotation is rx.EventHandler\n    )","tryCatchPattern":null,"preventionTips":["Never give rx.EventHandler parameters defaults in memos","Pass a no-op handler explicitly at the call site when an event is optional"],"tags":["reflex","rx-memo","typeerror","event-handler","default-value"],"backgroundTag":"decorator-validation-failed","analyzedSha":"45b8ed5ab735f8a56bbb09a42384f030eb0208e7","analyzedAt":"2026-08-28T19:25:27.644Z","schemaVersion":2},"datasetVersion":"2026-08-28T21:17:43.275Z"}