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));
    }

Action snapshot Diff snapshot

感谢大家!!!!

编辑: 我确实检查了整个减速器,发现问题是初始化操作...我讨厌我不知道为什么合并不起作用但它现在正在工作...

传播操作似乎覆盖了实际更新。不应该是这样的:

currentWine: {
   ...newState.currentWine,
   ...data,
   wineColor: newState.currentWine.wineColor,
}

第一件事——永远不要做深拷贝,只更新你需要的值。

如果你想用data替换currentWine,就那样做。

    on(WineActions.SetCurrentWine, (state, data) => {
        return {
            ...state,
            currentWine: data,
        };
    }),

仅此而已。