def Parent(): state, set_state = use_state(0) return html.div( html.button( { "onClick": set_child_key_num.use(lambda: set_state(state + 1)) }, "click me", ), Child("some-key"), Child(f"key-{state}"), )
def Child(child_key): state, set_state = use_state(0) @use_effect async def record_if_state_is_reset(): if state: return effect_calls_without_state.append(child_key) set_state(1) did_call_effect.set() return html.div( child_key, key=child_key, )
def _use_callable(initial_func: _FuncVar) -> Tuple[_FuncVar, Callable[[_Func], None]]: state: Tuple[_FuncVar, Callable[[_Func], None]] = hooks.use_state( lambda: initial_func ) return state[0], lambda new: state[1](lambda old: new)
def Root(): event_name, set_event_name.current = use_state("first") return html.button({ event_name: event_handler.use(lambda: did_trigger.set_current(True)) })
def Child(): use_state( lambda: did_init_state.set_current(did_init_state.current + 1))
def Root(): key, set_key.current = use_state("key-1") return Child(key=key)
def SecondComponent(): second_used_state.current = use_state("second")[0] # reset state after unmount use_effect(lambda: lambda: second_used_state.set_current(None)) return html.div()
def FirstComponent(): first_used_state.current = use_state("first")[0] # reset state after unmount use_effect(lambda: lambda: first_used_state.set_current(None)) return html.div()