【发布时间】:2021-01-12 22:54:28
【问题描述】:
这是我的状态
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 },
],
}
这就是我正在做的事情
//let oldPosition = Array.from(this.state.positions); //1 method
//let oldPosition = [...this.state.positions]; //2 method
let oldPosition = this.state.positions.slice(0); //3 method
oldPosition[1].value = 14;
无论我在 3 种方法中做什么 我无法阻止状态的变化
我正在尝试复制位置并将其存储在 oldPosition 但在更改 oldPosition 的任何值时,我以某种方式更改了我的应用程序的原始状态:(
感谢您的帮助。
【问题讨论】:
-
您似乎有多个问题。通常,一个问题有一个您要解决的问题是一个好主意。代码sn-ps不错,但完整代码更好。
-
您正在复制
positions数组就好了。但是,您正在改变其中没有克隆的对象。请改用oldPosition[1] = {...oldPosition[1], value: 14}。
标签: javascript arrays clone spread