useReducer:
- 第一个参数reducer和redux的reducer是一样的。
- 第二个参数的initialArg是初始值的意思。
- 第三个参数int是重置的意思
自我理解:我感觉这个钩子是和context差不多的效果,但是它比context传递的组件更深。也是为了解决我们在组件中一层一层去传参办法。
使用示例:
const initialState = {count: 0};
function reducer(state, action) {
switch (action.type) {
case 'increment':
return {count: state.count + 1};
case 'decrement':
return {count: state.count - 1};
case 'reset':
return action.payload;
default:
throw new Error();
}
}
function Counter() {
const [state, dispatch] = useReducer(reducer, initialState);
return (
<>
Count: {state.count}
<button onClick={() => dispatch({type: 'decrement'})}>-</button>
<button onClick={() => dispatch({type: 'increment'})}>+</button>
<Button onClick={() => dispatch({type: 'reset'})}>重置</Button>
</>
);
}