2016-04-28 44 views
-2

我正在使用2維數組作爲狀態。如何在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"}); 

編輯:爲什麼我得到downvoted?

+0

你得到的錯誤是什麼? – northsideknight

+0

'未知:意外的令牌'的位置「[」 – AchiPapakon

回答

2

該狀態保留爲地圖,所以您編輯的方式並不合理。我的建議是把以前的狀態視爲「不可變的」(我的例子實際上並沒有這樣做),並取代批發價值。

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

現在我明白了,謝謝。我想我必須使用'.slice()'創建一個克隆。 – AchiPapakon

1

它預計不起作用 - 你正在改變數據,並以非常奇怪的方式(我沒有得到你想要做的這樣的setState聲明)。

假設你想更新你的二維數組,我將使用React提供的update插件;

import update from 'react-addons-update'; 

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

我已經讀過關於突變,但我不直接更改'this.state.board'。 – AchiPapakon

相關問題