说我有一些初始状态,例如
const initialState = {
loading: false,
updating: false,
saving: false,
data: {},
error: null
};
我想作为操作的结果添加到数据,但是我要添加的数据将是一个数组。我该怎么办?
我尝试过
export default produce((draft, action) => {
switch (action.type) {
case UPDATE_STATE.SUCCESS:
draft.data.new_Array.push(action.payload);
draft.loading = false;
break;
default:
}
}, initialState);
但是这个错误。
如果我将初始状态设置为
const initialState = {
loading: false,
updating: false,
saving: false,
data: {
newArray: []
},
error: null
};
在使阵列键覆盖初始状态并删除键之前对状态的任何更新。即
export default produce((draft, action) => {
switch (action.type) {
case OTHER_UPDATE_STATE.SUCCESS:
draft.data = payload.action;
draft.loading = false;
break;
default:
}
}, initialState);
有人可以帮忙吗?
答案 0 :(得分:2)
有一件事我发现您会遇到麻烦,draft.data.new_Array.push(action.payload);
确保不修改现有数据结构。原因是redux
依赖于对象的内存引用,如果对象引用不更改,则可能使redux
蒙混过去。
在您的情况下,我有什么感觉都不会触发的。
一种修改引用的方法是创建一个新对象,例如。
return [...data, newElementObject]