2015-06-17 75 views
2

每當React類具有一個包含數組的狀態對象時,更新該狀態就會感到尷尬。通常我所做的是更改/更快的方式更改React陣列狀態而不是克隆它?

var newArrayThing = _.clone(this.state.arrayThing); //or slice() 
newArrayThing[123] = 42; //update stuff 
this.setState({arrayThing: newArrayThing}); 

有沒有更好或更優雅的方式來處理我失蹤?特別是因爲我總覺得如果陣列很大而且變化很小,這是不必要的慢。所有那些複製一個簡單的改變。但國家不應該直接編輯似乎是口頭禪。

Facebook的文檔提到了Immutableability Helpers,但它們看起來比這更加遙不可及。

回答

5

這是一個非常地道的方式做到這一點,但如果你有超過克隆大型陣列的關注,你一定要看看你提到的update helper,它不是真的那麼糟糕:

this.setState({ 
    arrayThing: React.addons.update(this.state.arrayThing, {123: {$set: 42}}) 
}) 
+0

這是驚人的! –