场景:redux状态中存在一个数组[],我想对数组中的item进行添加或修改,修改完成之后希望页面能显示出来,可是使用splice进行操作,无论如何都不会触发页面重新渲染,可是state确实发生了变化,代码如下:
case SUCCESS_ADDKEY: let data = state.keys; state.keys.splice(0, 0, action.payload); return Object.assign({}, state, { keys: data }); break;
state发生变化,view未渲染
通过如下改写就能够渲染view
case SUCCESS_ADDKEY:
let data = [action.payload, ...state.keys];
return Object.assign({}, state, {
keys: data,
});
break;
实在不明白原因,求解。
state 必须为新的对象,不推荐通过修改原状态来实现