Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 状态变量发生不可预测的变化-ReactJS_Javascript_Arrays - Fatal编程技术网

Javascript 状态变量发生不可预测的变化-ReactJS

Javascript 状态变量发生不可预测的变化-ReactJS,javascript,arrays,Javascript,Arrays,我是React的新手。我需要一些帮助来解决这个问题 代码: this.state={ 测试状态:{ 测试阵列:[ {name:“bob”}, {姓名:“爱丽丝”}, {姓名:“约翰”} ] } } testFn=()=>{ 让我们一起来; a={…this.state.testState};//使用扩展运算符复制对象而不是引用 a、 testArray.map((obj)=>{ obj.name=“反应太棒了” }) log(this.state.testState) }spread操作符只进行

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

代码:
this.state={
测试状态:{
测试阵列:[
{name:“bob”},
{姓名:“爱丽丝”},
{姓名:“约翰”}
]
}
}
testFn=()=>{
让我们一起来;
a={…this.state.testState};//使用扩展运算符复制对象而不是引用
a、 testArray.map((obj)=>{
obj.name=“反应太棒了”
})
log(this.state.testState)
}
spread操作符只进行浅拷贝 要保证完整的对象拷贝,请使用

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

更好的解决方案
从源头上解决它。不要做深度状态,它实际上是在状态中编写对象的关键部分。你应该把它们放得很浅。在本例中,您已经对Obj->Array->Obj进行了深入的研究。

与问题无关,但您也在使用
.map()
进行简单迭代,而不使用其返回值。对于简单的迭代,您可以使用
.forEach
,它是为这类事情而构建的