繁体   English   中英

如何在React中的状态下更改数组?

[英]How can I change an array in a state in React?

我正在使用二维数组作为状态。

我该如何更新?

getInitialState: function() {
    var board = [];
    for (var i = 0; i < i_max; i++) {
        var innerArray = [];
        for (var j = 0; j < j_max; j++) {
            innerArray.push("empty");
        }
        board.push(innerArray);
    }
    return {board: board};
},

下面的行似乎不起作用:

this.setState({board[1][2]: "full"});

编辑:为什么我会被否决?

状态被保存为地图,因此您进行编辑的方式实际上没有任何意义。 我的建议是将先前的状态视为“不可变的”(我的示例实际上并未这样做),并替换批发价。

var changedBoards = this.state.boards
changedBoards[0][1] = "full";
this.setState({boards: changedBoards})

预期它不起作用-您正在以非常奇怪的方式对数据进行变异(我无法用这种setState语句来做您想做的事情)。

假设您想更新二维数组,我将使用React提供的update插件。

import update from 'react-addons-update';

this.setState(update(this.state, {
  board: { 0: { 1: { $set: 'full' } } }
}));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM