useReducerLazy<TState, TAction, TInit> function
ReducerHook<TState, TAction, TInit>
useReducerLazy<TState, TAction, TInit>(
- TState reducer(
- TState state,
- TAction action
- TInit initialArg,
- TState init(
- TInit
Initializes state of a uiFunction component to init(initialArg)
and creates ReducerHook.dispatch method.
Example:
Map initializeCount(int initialValue) {
return {'count': initialValue};
}
Map reducer(Map state, Map action) {
switch (action['type']) {
case 'increment':
return {...state, 'count': state['count'] + 1};
case 'decrement':
return {...state, 'count': state['count'] - 1};
case 'reset':
return initializeCount(action['payload']);
default:
return state;
}
}
mixin UseReducerExampleProps on UiProps {
int initialCount;
}
UiFactory<UseReducerExampleProps> UseReducerExample = uiFunction(
(props) {
final ReducerHook<Map, Map, int> state =
useReducerLazy(reducer, props.initialCount, initializeCount);
return Fragment()(
state.state['count'],
(Dom.button()
..onClick = (_) => state.dispatch({'type': 'increment'})
)('+'),
(Dom.button()
..onClick = (_) => state.dispatch({'type': 'decrement'})
)('-'),
(Dom.button()
..onClick = (_) => state.dispatch({
'type': 'reset',
'payload': props.initialCount,
})
)('reset'),
);
},
_$UseReducerExampleConfig, // ignore: undefined_identifier
);
Learn more: reactjs.org/docs/hooks-reference.html#lazy-initialization.
Implementation
ReducerHook<TState, TAction, TInit> useReducerLazy<TState, TAction, TInit>(
TState Function(TState state, TAction action) reducer, TInit initialArg, TState Function(TInit) init) =>
react_hooks.useReducerLazy(reducer, initialArg, init);