NGRX - 扩展运算符在 reducer 中删除属性而不是替换
NGRX - spread operator remove atribute instead of replace in reducer
在我的 reducer 中,我试图将当前状态与值传递的 trought 操作合并。但问题是合并操作删除对象属性而不是更新它。
我正在使用:
on(WineActions.SetCurrentWine, (state, data) => {
const newState = deepCopy(state);
return {
...newState,
currentWine: {...newState.currentWine, ...data}
};
}),
...
export function deepCopy(state) {
return JSON.parse(JSON.stringify(state));
}
- 离子客户端 6.9.1
- angular 8.2.14
- ngrx/store 8.6.0
- ngrx/store-devtools 8.6.0
Action snapshot
Diff snapshot
感谢大家!!!!
编辑:
我确实检查了整个减速器,发现问题是初始化操作...我讨厌我不知道为什么合并不起作用但它现在正在工作...
传播操作似乎覆盖了实际更新。不应该是这样的:
currentWine: {
...newState.currentWine,
...data,
wineColor: newState.currentWine.wineColor,
}
第一件事——永远不要做深拷贝,只更新你需要的值。
如果你想用data
替换currentWine
,就那样做。
on(WineActions.SetCurrentWine, (state, data) => {
return {
...state,
currentWine: data,
};
}),
仅此而已。
在我的 reducer 中,我试图将当前状态与值传递的 trought 操作合并。但问题是合并操作删除对象属性而不是更新它。 我正在使用:
on(WineActions.SetCurrentWine, (state, data) => {
const newState = deepCopy(state);
return {
...newState,
currentWine: {...newState.currentWine, ...data}
};
}),
...
export function deepCopy(state) {
return JSON.parse(JSON.stringify(state));
}
- 离子客户端 6.9.1
- angular 8.2.14
- ngrx/store 8.6.0
- ngrx/store-devtools 8.6.0
Action snapshot Diff snapshot
感谢大家!!!!
编辑: 我确实检查了整个减速器,发现问题是初始化操作...我讨厌我不知道为什么合并不起作用但它现在正在工作...
传播操作似乎覆盖了实际更新。不应该是这样的:
currentWine: {
...newState.currentWine,
...data,
wineColor: newState.currentWine.wineColor,
}
第一件事——永远不要做深拷贝,只更新你需要的值。
如果你想用data
替换currentWine
,就那样做。
on(WineActions.SetCurrentWine, (state, data) => {
return {
...state,
currentWine: data,
};
}),
仅此而已。