Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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
Can';使用。。。运算符或数组。from()或片(0),Javascript/React_Javascript_Arrays_Clone_Spread - Fatal编程技术网

Can';使用。。。运算符或数组。from()或片(0),Javascript/React

Can';使用。。。运算符或数组。from()或片(0),Javascript/React,javascript,arrays,clone,spread,Javascript,Arrays,Clone,Spread,这是我的州 state = { size: window.innerWidth <= 700 ? (window.innerWidth <= 425 ? 200 : 300) : 400, positions: [ { row: 2, col: 5, value: 2, id: 1 }, { row: 3, col: 2, value: 2, id: 2 }, ], } 无论我在三种方法中做什么 我无法阻止国家的变化 我试图复制位置并将其存储在oldPositio

这是我的州

state = {
 size: window.innerWidth <= 700 ? (window.innerWidth <= 425 ? 200 : 300) : 400,
 positions: [
   { row: 2, col: 5, value: 2, id: 1 },
   { row: 3, col: 2, value: 2, id: 2 },
 ],
}
无论我在三种方法中做什么 我无法阻止国家的变化

我试图复制位置并将其存储在oldPosition中,但在更改oldPosition的任何值时,我会以某种方式更改我的应用程序的原始状态:(


感谢您的帮助。

为了克隆您的对象数组,您可以通过映射状态数组并返回带有排列的每个对象来创建一个新数组

let oldPosition = this.state.positions.map(pos => ({...pos}));

似乎您有多个问题。通常,一个问题有一个您试图解决的问题是一个好主意。代码片段很好,但完整的代码更好。您复制的
位置
数组很好。但是,您正在对其中未克隆的对象进行变异。使用
oldPosition[1]={…oldPosition[1],值:14}
let oldPosition = this.state.positions.map(pos => ({...pos}));