gpt4 book ai didi

javascript - 状态变量的变化不可预测 - ReactJS

转载 作者:行者123 更新时间:2023-12-02 21:32:03 25 4
gpt4 key购买 nike

我是 React 的新手。我需要一些帮助来解决这个问题

代码:

 this.state={
testState: {
testArray: [
{ name: "bob" },
{ name: "alice" },
{ name: "john" }
]
}
}

testFn = () => {

let a;
a = { ...this.state.testState }; //using spread operator to copy the object instead of referencing
a.testArray.map((obj) => {
obj.name = "React is awesome"
})
console.log(this.state.testState)
}

输出:

testArray: Array(3)
0: {name: "React is awesome"}
1: {name: "React is awesome"}
2: {name: "React is awesome"}

我必须修改a而不改变状态。但这里,状态也随着迭代而改变。我该如何解决这个问题?

最佳答案

扩展运算符仅进行浅复制

保证完整的对象复制使用

const CopyState = JSON.parse(JSON.stringify(yourState))

更好的解决方案

从源头解决。不要制作深层状态,它实际上是在状态中写入对象的关键部分。你应该把它们保持得很浅。在这种情况下,您已经深入了解 Obj -> Array -> Obj。

关于javascript - 状态变量的变化不可预测 - ReactJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60599114/

25 4 0
文章推荐: javascript - 在 Javascript 中操作内容后显示之前的
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com