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

时间:2016-04-28 13:49:15

标签: javascript arrays reactjs state

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

如何更新?

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

编辑:为什么我会被投票?!

2 个答案:

答案 0 :(得分:2)

状态保存为地图,因此您编辑的方式并不合理。我的建议是将之前的状态视为“不可变”(我的例子实际上并没有这样做)并替换值批发。

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

答案 1 :(得分:1)

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

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

import update from 'react-addons-update';

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