如何在 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"});

编辑:为什么我被否决了?!

它预计不会工作 - 你正在以非常奇怪的方式改变数据(我不明白你想用这样的 setState 语句做什么)。

假设,你想更新你的二维数组,我会使用 update React 提供的插件;

import update from 'react-addons-update';

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

该州以地图的形式保存,因此您编辑的方式没有任何意义。我的建议是将以前的状态视为 "immutable"(我的示例实际上并没有这样做)并替换值批发。

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