2016-10-06 4 views
1

私はかなり新しく反応しており、現在は反応しているネイティブを使用しています。私は状態管理ライブラリから分離されたコンポーネントを作成しようとしています。私の問題は、現在reduxを使用していますが、コンポーネント自身がthis.statethis.setStateを使用して、内部パターンをアンチパターンのように保ち、レンダリングが動作していないように見えることが原因です。だから私の質問は、どのように私はredux、フラックスなどに依存しないが、内部状態を維持することができる分離コンポーネントを作成することですか?サードパーティのコンポーネントは通常どのようにそれを行いますか?外部UIコンポーネントにsetStateを使用しますか?

答えて

1

私はコンポーネントの状態(this.state)を使用するとアンチパターンではないと思います。実際、これはコンポーネントが内部状態を維持/更新する正しい方法だと私は考えています。あなたが気づく必要があるのは、コンポーネントの状態(this.setStateを使用)を変更すると、render()が再び呼び出されるということだけです。状態を更新したいが、でない場合は、コンポーネントを再度レンダリングしたい場合は、コンポーネントのshoudComponentUpdate(nextProps, nextState)関数をオーバーライドして適切に実装する必要があります。

コンポーネントが状態を更新する理由はたくさんあります。例えば、私はこれに似たrender()機能を持つコンポーネントいますので、現在の状態に基づいて、構成要素は、対応する子コンポーネントを

render() { 
    if (this.state.networkError) { 
     return <ErrorView /> 
    } else if (this.state.isLoading) { 
     return <Spinner visible={true}/> 
    } else { 
     return <Text>Success</Text> 
    } 
} 

をレンダリングします。

関連する問題