为了账号安全,请及时绑定邮箱和手机立即绑定

状态变量不可预测地变化 - ReactJS

状态变量不可预测地变化 - ReactJS

catspeake 2022-05-14 13:52:04
我是 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不改变状态的情况下进行修改。但是在这里,状态也随着迭代而改变。我怎么解决这个问题?
查看完整描述

1 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

扩展运算符只做一个浅拷贝

为了保证完整的对象副本使用

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

更好的解决方案

从源头解决。不要做深度状态,它实际上是在状态中写入对象的关键部分。你应该让它们很浅。在这种情况下,您已经深入使用 Obj -> Array -> Obj。


查看完整回答
反对 回复 2022-05-14
  • 1 回答
  • 0 关注
  • 71 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信