Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 如何在React中使用N个对象更新二维数组的状态?_Javascript_Arrays_Reactjs_React Vis - Fatal编程技术网

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
    }
});