gpt4 book ai didi

javascript - 在 React 中克隆整个状态对象会导致副作用吗?

转载 作者:行者123 更新时间:2023-12-02 21:05:20 33 4
gpt4 key购买 nike

我在我正在使用的 React 代码库中经常看到这样的代码,感觉它会导致错误,但我只是猜测。

代码示例:

const newState = Object.assign({}, {}, this.state);
newState.x = '123';
newState.collection.push('abc');
this.setState(newState);

与以下代码相比,此代码是否会导致副作用、性能更差,或者是否很好?:

this.setState(prevState => ({
const collection = prevState.collection.slice();
collection.push('abc');
return {
x: '123',
collection: collection
}));

最佳答案

是的,如果存在嵌套对象或数组,这会改变状态,因为 Object.assign() 会进行浅复制。所以这一行:

newState.collection.push('abc');

实际上正在改变状态中的集合数组,如果您的应用程序增长,这可能会导致一些令人讨厌和意外的错误

关于javascript - 在 React 中克隆整个状态对象会导致副作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61239438/

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