如何在 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})
我正在使用二维数组作为状态。
如何更新?
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})