使用了redux和react-redux
reducer的部分代码如下
//给初始状态一个默认值:{money: 0}
export function reducer(state = {money: 0}, action) {
switch (action.type) {
case ADD:
//使用Object.assign,在调试的过程发现state确实改变了,但是页面没有变化,而使用扩展运算符则可以。
// return Object.assign(state, {money: (state.money + 1)});
return {...state, ...{money: state.money + 1}};
case SUBTRACTION:
return {...state, ...{money: state.money - 1}};
default:
return state;
}
}
请问有大牛知道原因吗
文档
文档上有这么一句话 :
不能这样使用 Object.assign(state, { visibilityFilter: action.filter }),因为它会改变第一个参数的值。你必须把第一个参数设置为空对象。
应该把我的代码改成这样
Object.assign({},state, {money: (state.money + 1)})