在讨论主题之前,我想提一提,我已经提到过类似的问题,但是我自己却找不到解决方案。

Updating React state as a 2d array?

假设这是我的状态对象

state = {
    graphData: [
        [{x: 0, y: 0}],
    ],
};


随着时间的增加,graphData会变大,可能看起来像这样

    graphData: [
        [{x: 0, y: 0}, {x: 1, y:1}, {x:2, y:2}],
    ],


目前,我以这种方式处理:

  nextGraphData = this.state.graphData[0][graphDataLength] = {x: lastXAxisValue + 1, y: value};

    this.setState({
        graphData: {
            ...this.state.graphData,
            nextGraphData
        }
    });


显然,我得到一个错误,说我不应该直接改变状态。因此,如何实现相同而无需直接突变。我试了一下,但无法弄清楚。

最佳答案

尝试这个

state = {
    graphData: [
        [{x: 0, y: 0}],
    ],
};


这样使用

this.setState({
  ...this.state,
  graphData: [...this.state.graphData, {x:1,y:1}]
})

09-25 18:01