Javascript 如何在React中使用N个对象更新二维数组的状态?
在我开始讨论这个问题之前,我想提一下,我已经提到过类似的问题,但我自己无法找到解决方案 假设这是我的状态对象Javascript 如何在React中使用N个对象更新二维数组的状态?,javascript,arrays,reactjs,react-vis,Javascript,Arrays,Reactjs,React Vis,在我开始讨论这个问题之前,我想提一下,我已经提到过类似的问题,但我自己无法找到解决方案 假设这是我的状态对象 state = { graphData: [ [{x: 0, y: 0}], ], }; 随着时间的增加,graphData将变得更大,可能看起来像这样 graphData: [ [{x: 0, y: 0}, {x: 1, y:1}, {x:2, y:2}], ], this.setState({ ...this.
state = {
graphData: [
[{x: 0, y: 0}],
],
};
随着时间的增加,graphData将变得更大,可能看起来像这样
graphData: [
[{x: 0, y: 0}, {x: 1, y:1}, {x:2, y:2}],
],
this.setState({
...this.state,
graphData: [...this.state.graphData, {x:1,y:1}]
})
目前,我是这样处理的:
nextGraphData = this.state.graphData[0][graphDataLength] = {x: lastXAxisValue + 1, y: value};
this.setState({
graphData: {
...this.state.graphData,
nextGraphData
}
});
显然,我得到一个错误,说我不应该直接改变状态。那么,如何在没有直接突变的情况下实现同样的效果呢。我试着玩了一会儿,但还是想不出来。试试这个
state = {
graphData: [
[{x: 0, y: 0}],
],
};
像这样使用
graphData: [
[{x: 0, y: 0}, {x: 1, y:1}, {x:2, y:2}],
],
this.setState({
...this.state,
graphData: [...this.state.graphData, {x:1,y:1}]
})
试试这个
state = {
graphData: [
[{x: 0, y: 0}],
],
};
像这样使用
graphData: [
[{x: 0, y: 0}, {x: 1, y:1}, {x:2, y:2}],
],
this.setState({
...this.state,
graphData: [...this.state.graphData, {x:1,y:1}]
})
由于这一行,出现了错误
nextGraphData = this.state.graphData[0][graphDataLength] = {x: lastXAxisValue + 1, y: value};
当您试图将值直接分配给状态时。graphData
你要做的就是这样改变它:
让nextGraphData={…this.state.graphData,{x:lastXAxisValue+1,y:value}
this.setState({
graphData: {
...nextGraphData
}
});
由于这一行,出现了错误
nextGraphData = this.state.graphData[0][graphDataLength] = {x: lastXAxisValue + 1, y: value};
当您试图将值直接分配给状态时。graphData
你要做的就是这样改变它:
让nextGraphData={…this.state.graphData,{x:lastXAxisValue+1,y:value}
this.setState({
graphData: {
...nextGraphData
}
});