2017-11-15 18 views
1

私は 'items'レデューサーに接続されている反応容器を持っています。ユーザープロファイルなどの別のページに移動することで、サーバーからユーザーの「アイテム」リストを取得し、状態を変更する必要があります。問題は、メインページからナビゲートするとアイテムの状態が既にデータで満たされていることです。ユーザーページでは、APIの呼び出しから変更されるまで数秒間古いものが表示されます。私はuserItemsのための新しい減速機を作成することを考えていましたが、別のユーザーページに移動すると、前のuserItemsが数秒間表示されます。ページの変更にRedux状態クリア

解決策は、データをフェッチして反応コンポーネント状態でのみ保持することです。そして還元しない?

ありがとうございました。

+0

ステートフルなパターンをお勧めします。新しいものをフェッチしていることをアプリケーションに知らせることができます。たとえば、 'status'ノードをアクションに追加するなど、' action.status.PENDING'、 'action.status .SUCCESS'と 'action.status.FAILURE'を使って、あなたのアプリやコンポーネントをどう反応させるかを知ることができます。 I.通話が保留中の場合は、現在の「アイテム」を表示しないでください。任意の非同期にこのパターンを適用できます。それは、ユーザーIDを持つハッシュを設定するか、そのユーザーのアイテムを検索して保存することができます。 – ajmajmajma

答えて

1

私はこの問題に取り組むための2つのより良いオプションがあると思う:あなたは含めることができ、「アイテムの相対あなたが見ているページへのが含まれている

  1. あなたが本当にのみにごReduxの状態にしたい場合APIを呼び出して状態を更新する際にローディングバーを表示する

  2. 状態のユーザーオブジェクト内の配列にユーザーの「アイテム」を格納し、ユーザーを表示することができます関連するユーザーの.items。必ずしもすべてのユーザーのアイテムをレデックスストアに常時置く必要はありません。あなたがロードインジケータなしでこれを実行した場合、ユーザーのページがありませんアイテムをロードし、そしてAPIを呼び出すとReduxの状態が

0

@Morgan危険ホールは正しい考えを持っているが更新された後の項目が表示されますtheir answer

ユーザー間を行き来する頻度によっては、itemsアレイ内のすべてのユーザーのすべてのアイテムを保持してから、activeUser属性をユーザーのIDで追加することも考えられます現在閲覧中です。次に、表示コンポーネントにitemsのリストをactiveUserでフィルタリングさせます。

これは、以前のフェッチの結果をキャッシュするのが快適である限り、ユーザー間を行き来するとパフォーマンスに役立ちます。

あなたのitemsリストの揮発性を理解してください。それが急速に変化するリストであれば、キャッシュしたくないかもしれません!