2016-07-12 11 views
0

これはReactのコードです。私は異なる機能のためにgetInitialStateの複数のインスタンスを持っています。しかし、私はこれらのすべてをこのように動かすことに問題があるかもしれないことを発見しています。ReactjsでgetInitialStateの複数のインスタンスを持つには?

getInitialState: function(){ 
if (localStorage.getItem('something')) 
{return {signedin: true}} 
else {return {signedin: false}} 
}, 

getInitialState:function(){ 
return {error: true} 
}, 

getInitialState:function(){ 
return {fliphouse: false} 
}, 

説明すると、getInitialStateの2番目のインスタンスはそのまま動作しません。つまり、2番目と3番目の順番を反転しない限り、getInitialStateです。私がそれをすると、コードは必要に応じて実行されます。しかし、私はReactが私に何かを伝えようとしていると感じる。

これは、通常、コンポーネント内にリーズコードを編成する方法ですか?

+1

ためにJSはすべてオブジェクトですが、2つ(またはそれ以上)の同一のキーを持つオブジェクトを持つことはできません。 – Uzi

答えて

2

あなたが同じオブジェクトでそれらのすべてを定義することができます。

getInitialState() { 
    return { 
    signedIn: !!localStorage.getItem('something'), 
    error: false, 
    fliphouse: false 
    }; 
} 

をあなたが(レンダリング()関数を除いて)どこかのコンポーネントで個別に変更することができ、例えば:

this.setState({ error: true }) // causes a new render 
1

これは、コンポーネントの初期状態を設定する正しい方法ではありません。初期状態関数は、コンポーネントがマウントしようとしているときに一度だけ呼び出されます。ここでコンポーネントの状態(必要な変数やオブジェクトのプロパティ)を設定し、それに応じてcomponentDidMountなどの他のメソッドでsetStateを使用してそれらを更新します。

したがって、私は3つの変数signedIn、状態オブジェクトにエラーとフリフュースを追加し、このオブジェクトを更新します。したがって、単一のinitialState関数が実行します。

関連する問題