2015-12-10 10 views
7

文字列変数の値をsetState()のキーとして使用する方法はありますか?React.js setState()の内部変数はキー内部ループですか?

getInitialState: function() { 
    return { 
     foo: '', 
     bar: '' 
    } 
} 

someOtherHandler: function() { 
    var arr = ['foo', 'bar']; 
    var _this = this; 
    var number = Math.random(); 

    for (var i in arr) { 
     _this.setState({ arr[i]: number }); 
    } 

} 

Reactが上記の構文エラーをスローし、arr [i]を変数に設定すると、その変数の名前で新しい状態が設定されます。

答えて

14

setStateを呼び出す前にオブジェクトを作成することができます。あなたはES6を使用している場合

var newState = {}; 
newState[i] = number; 
_this.setState(newState); 

はまた、あなたはcomputed propertyを利用することができます。

_this.setState({ [i]: number }); 

しかし、このコードはsetStateを複数回呼び出します、それは一度だけ、それを呼び出すために、より効率的です。更新された状態オブジェクトを構築し、それを適用する。

var newState = {}; 

for(var i in arr) { 
    newState[i] = number; 
} 

this.setState(newState); 
+0

ありがとうございます!私は実際には、私は同じことを本質的に指摘同様の質問を実行していた:http://stackoverflow.com/questions/29280445/reactjs-setstate-with-a-dynamic-key-name – cyoung

関連する問題