2016-12-03 7 views
0

私はサーバーにGETリクエストを行い、受け取ったデータを準備してチャートを作成する簡単なアプリケーションを作成しています。内部のアクションクリエイターをチェック

  1. ここでは、生データの確認と準備を担当するコードを配置する必要があります。現在、私は自分のアクションクリエイターでそれを持っていますが、おそらくコンポーネント自体にある必要がありますか?

  2. 既に用意されているデータとチャートに既に使用されているデータを確認して比較し、同じかどうか再確認しないでください。この小切手はどこに置くべきですか?今のところ私はアクションクリエイターの中に配置すると思います。しかし、そのために私はgetState()を状態にアクセスするために使用する必要がありますが、正しくはありません。

  3. アクションクリエイターデータが有効でない場合、私は単に、それを自分の状態を更新することはできません(例えば、特定のアクションの作成者を派遣していない)または多分私は状態を更新する必要があるため、私のためにすべてのこれらのチェックのために適切な場所ですそれが有効ではないにもかかわらず新しいデータで?これらのアクションクリエイター与え

、説明したチェックのために最高の場所何で?:

 export function fetchPopulations(term = "") { 
      return function (dispatch) { 
       dispatch(fetchingPopulations()) 

       term=toTitleCase(term) 

       return fetch(`${API_URL}${term.replace(/\s/g, '%20')}`) 
       .then(response => response.json()) 
       .then(json => dispatch(requestPopulations(json))) 
     } 
    } 

    export function requestPopulations(data = []) { 
     return { 
      type: REQUEST_POPULATIONS, 
      payload: data, 
     } 
    } 
    export function fetchingPopulations() { 
     return { 
      type: FETCHING_POPULATIONS 
     } 
    } 

答えて

1

私はあなたが右のそれをやっていると言うでしょう。 (はい、勝利のための機能を構成する!)あなたの例では

requestPopulationsfetchingPopulationsは、実際の行動のクリエイターであり、 fetchPopulationsは作曲機能です。

  1. 私は生 データをチェックし、準備を担当するコードを配置する必要があります。現在私は自分のアクションクリエイターでそれを持っていますが、おそらくそれはコンポーネント自体にあるために が必要でしょうか?

    コンポーネントは、アプリケーションのビジネスロジックを置く場所ではありません。コンポーネントは、MVCのの表示を表す必要があります。 API呼び出し、ビジネスロジックなし、小道具と状態のみ。

  2. 私は はすでにチャートのために使用されているデータで作成したデータをチェックして比較する必要があり、それが有効な 同じかない場合は再レンダリング呼び出すことはありません。この小切手はどこに置くべきですか?今のところ私はアクションクリエイターの中に を置くと思います。しかし、そのためには、状態にアクセスするためにgetState() を使用する必要がありますが、正しくはありません。

    、これらのチェックを実行するために(それは本当に、コードのメンテナンスと再利用に輝く)モジュラー関数を作成し、あなたの実際の行動のクリエイターと一緒に別のものにそれらを一緒に構成し、あなたが必要な場合にのみ送出できます。さらに最適化は、コンポーネントライフサイクルフックshouldComponentUpdate(nextProps, nextState)の内部で行うことができます。

    export function myComposingFunction(params) { 
        return (dispatch, getState) => { 
         // ... 
    

    ですから、getState()を使用することができます。また、私は間違いなくこのようなシグネチャを持つメソッドを使用するためのアンチパターンではないと思います。

  3. アクションクリエイターデータが有効でない 場合、私は単に、それを自分の状態を更新することはできません(例えば 特定のアクションの作成者を派遣していない)ので、私のためにすべてのこれらのチェックのために適切な場所だそれともIそれが有効ではないにもかかわらず、新しいデータで 州を更新する必要がありますか?

    いいえ、無駄なデータで状態を更新しないでください。そうするなら、ツリー全体を何も再描画しません。 「データが有効ではない場合、単に状態を更新することはできません(たとえば、特定のアクションクリエイターをディスパッチしないなど)」と言うことは絶対に正しいですか?

関連する問題