我定义了一个化简器,但是它总是返回NaN
值而不是数字。我在store.js
中定义了一个单一存储,例如createStore(reducer,{},applyMiddleWire()
。减速器正在工作,但始终返回NaN
值。
import { INCREMENT, DECREMENT } from "./buttonAction";
const initialState = {
counter: 1
};
const Count = (state = initialState, action) => {
switch (action.type) {
case "INCREMENT":
state = {
...state,
counter: state.counter + 1
};
console.log("Number", state);
break;
case "DECREMENT":
state = {
...state,
counter: state.counter + 1
};
console.log("Number", state);
break;
default:
}
return state;
};
export default Count;
答案 0 :(得分:0)
我一直在寻找相同的错误,我想也许您的问题与其他人说的一样,是因为未在Component(method-properties)中定义有效负载。
我解决了关于Redux生命周期的错误,并学到了其他一些东西。
https://codesandbox.io/s/react-redux-counter-03-xjqnq
increment = () => {
// this.setState({ count: this.state.count + 1 });
this.props.dispatch({ type: "INCREMENT", payload: 5 });
};
decrement = () => {
// this.setState({ count: this.state.count - 1 });
this.props.dispatch({ type: "DECREMENT", payload: 3 });
}; enter code here
答案 1 :(得分:0)
在SWITCH情况下,您需要返回新状态。
重点是Redux状态不同于React状态。 更改React状态时,setState()仅更改状态的特定部分,而其他状态内容保持不变。
另一方面,Redux希望您始终返回新状态,即新对象。 Redux不像React那样合并旧状态和新状态。因此答案是,您需要在每种开关情况下创建一个新对象并将其返回,Redux将用新状态替换旧状态。
switch (action.type) {
case "INCREMENT":
return {
...state,
counter: state.counter + 1
};
console.log("Number", state);
break;