gpt4 book ai didi

javascript - 终极版 : cloning state does not work

转载 作者:行者123 更新时间:2023-11-28 14:44:43 24 4
gpt4 key购买 nike

我有一个非常简单的问题,但是......

reducer 的代码(在 redux/react-native 应用程序中):

...
case SAMPLES_DELETE_REQUEST_SUCCESS: {
var newState = Object.assign({}, state);
const indexToDelete = newState.samples.findIndex( sample => {
return sample.id == action.sample.id
})
newState.samples.splice(indexToDelete, 1)
debugger;
return newState
}
...

好的,我复制状态并将其存储到 newState 中。但是当我执行 newState.samples.splice(indexToDelete, 1) 时,newState 被正确修改,而且 state 也被正确修改!为什么??我一定很累了……

最佳答案

splice函数修改原始数组。 Object.assign不进行深度克隆。因此你仍然在修改原始状态!

您必须手动复制要克隆的嵌套对象(或数组):

// Deep Clone
obj1 = { a: 0 , b: { c: 0}};
let obj2 = JSON.parse(JSON.stringify(obj1));

关于javascript - 终极版 : cloning state does not work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46795069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com