【发布时间】:2021-02-18 10:05:02
【问题描述】:
我正在从官方网站学习 useReducer 并且我的代码无法正常工作,我不确定 initialCount 应该如何工作。任何帮助将不胜感激!
import React, { useReducer } from "react";
const reducer = (state, action) => {
switch (action.type) {
case "increment":
return { count: state.count + 1 };
break;
case "decrement":
return { count: state.count - 1 };
break;
default:
throw new Error();
}
};
const UseReduceExample = () => {
const [state, dispatch] = useReducer(reducer, initialCount );
return (
<>
Count: {state.count}
<button onClick={() => dispatch({ type: "increment" })}>+</button>
</>
);
};
export default UseReduceExample;
【问题讨论】:
-
你添加
const initialState = {count: 0};了吗? -
不,我没有,initialState 是否需要包含我们通过 reducer 传递的所有值?
-
不,但在您的情况下,您正在使用状态的增量/减量。所以
state.count的必备初始值 -
“initialState 是否需要包含我们通过 reducer 传递的所有值?”作为最佳实践,是的。 @Muhammad 在技术上是正确的,在某些情况下您可以摆脱不完整的初始状态。但根据经验,“initialState 应该包含您传递给 reducer 的所有值”是一个非常可靠的指南。
标签: reactjs use-reducer