2017-07-30 15 views
1

Reduxストアがあるとします。これらの分野のすべてでReduxの非同期状態の整合性を維持する

{ 
    ... 
    nearbyFriends: ["Bob", "Jimmy"], 
    nearbyShops: ["Point & Click tools", "Bobby Ray's"], 
    address: "42 Enth Street, Townsville, Countryland", 
    weather: "Cloudy", 
    ... 
} 

値:

{ 
    userCoordinates: [3.1457, 2.1728], 
    ... 
} 

は、その後店が 座標に依存したデータと20個の以上のフィールドを持っているとします。その状態は、ユーザの現在の座標とuserCoordinatesフィールド を持っています さまざまなサービスからHTTP経由でロードされ、各フィールドごとに1つの別個の要求がロードされます。

は今、ユーザの地理位置情報が更新されると仮定して、アクションが がuserCoordinatesの値を変更することを派遣している:

dispatch(updateCoords([1.6180, 1.4142])); 

userCoordinatesは新しい座標を持ち、全20の他のフィールドに無効なデータを持っています。

  1. 目標は、ちょうど私がリクエストが新しいデータをフェッチするために作るのですかすべてフィールド「最終的に」有効を維持することですか?
  2. React-Reduxを使用し、これらのフィールドの組み合わせが異なる複数のコンポーネントがあり、複数のコンポーネントで使用されているフィールドと使用されていないフィールドがある場合、メソッドがどのように変化しますか?

答えて

0

これがどのように構成されているかによって、私は2つのうちのいずれかを行います。

1:あなたのレデューサーの状態を比較してください。状態のユーザー座標に変更がある場合は、updateNeeded: trueのように店舗に何かを追加してから、他のデータをロードしているときはいつでもチェックして、updateNeededが真であれば、サーバーからのデータ。

2:正しく設定されている場合は、componentWillReceivePropsを使用して小道具を比較できます。 userCoordinatesに変更がある場合、他のデータフィールドを取得するためのアクションをディスパッチします。もちろん

、あなただけの1回のコールですべてのデータを取得することができれば、これはちょうど容易になるだろう...

+0

私はすでにこのアプローチを試みたのだが、私の経験ではスケーラブルではありません。 40個のコンポーネントを持ち、コードの上にこれらの小道具/マウントフックを書いて維持することを想像してみてください!重複した要求を扱うことは言うまでもありません。その時点で、私は標準的なReactの方が良いでしょう。 –