我想知道删除 redux 操作中的嵌套字段的正确方法是什么。例如,我有这样的代码:
const SUBSCRIBE = 'SUBSCRIBE';
const UNSUBSCRIBE = 'UNSUBSCRIBE';
export default function reducer(state = {}, action) {
const {
productName,
products,
componentName
} = action;
switch (action.type) {
case UNSUBSCRIBE: {
if (state[productName]?.[componentName]) {
const newState = { ...state };
delete newState[productName][componentName];
return newState;
} else {
return state;
}
}
default:
return state;
}
}
export function unsubscribe(productName, componentName) {
return {
type: UNSUBSCRIBE,
productName,
componentName
};
}
在UNSUBSCRIBE操作中,我删除了newState[productName][componentName]字段,但这也将删除“旧”状态的字段。因此,从理论上讲,如果有其他操作使用该字段,则它们可能会丢失,因为状态已发生突变。我应该将旧状态深度复制到newState然后删除吗newState[productName][componentName]?
呼唤远方
相关分类