对于useReducer,如果你对redux熟悉,你可以把它理解为一个没有全局共享功能的redux。如果不熟,你也可以把它理解为一个加强的useState。
它的好处在于:
1、可以更好的描述“如何更新状态”
2、组件负责发出 action,reducer 负责更新状态的解耦模式
3、通过传递 dispatch ,可以减少状态值的传递
const initState = { count: 0 };
const reducer = (state, action) => {
switch (action.type) {
case "add":
return { count: state.count + 1 };
case "subtract":
return { count: state.count - 1 };
}
};
const Home = () => {
const [state, dispatch] = useReducer(reducer, initState);
return (
<div>
{state.count}
<button onClick={() => dispatch({ type: "add" })}>++</button>
<button onClick={() => dispatch({ type: "subtract" })}>++</button>
</div>
);
};