减速器
`
saveEnd(state, action){
let data = action.payload;
let data1 = {};
data1['' + data.platform] = {};
data1['' + data.platform]['' + data.type] = data;
$.extend(true, state.serCfgData, data1);
return state
}
`
我发现chrome redux开发工具中的状态发生了变化,但视图没有更新,那么当我使用return {...state}
视图更新时,我不明白。
答案 0 :(得分:1)
当你看到你的redux商店更新但没有看到组件重新渲染时,你应该做的第一件事就是检查你的状态对象是否被改变。
根据有关extend的jquery文档:
将两个或多个对象的内容合并到中 对象强>
请注意,在您的代码中:
// jQuery.extend( [deep ], target, object1 [, objectN ] )
$.extend(true, state.serCfgData, data1);
您正在改变状态对象而不是它的副本。 你可以这样做,以避免改变状态:
...
...
// Babel Stage 3 spread operator
const newState = {...state};
$.extend(true, newState.serCfgData, data1);
return newState;
请注意,当您return {...state}
时,它更新的原因是您返回一个新对象(Spread运算符会创建一个新对象。)
观看此视频,了解如何避免缩减器中的对象突变:
https://egghead.io/lessons/javascript-redux-avoiding-object-mutations-with-object-assign-and-spread