データベースに多数のエントリ (ユーザーなど) があるとします。リスト用と詳細用 (エントリを編集できる場所) の 2 つのルートもあります。今、データ構造にアプローチする方法に苦労しています。
私は2つのアプローチと、両方のちょっとした組み合わせを考えています。
共有データセット
- に移動し
/list、すべてのユーザーが redux ストアに保存されている api からダウンロードされ、キーの下にとusersを追加 して、リストの一部のみをレンダリングしますusers_offsetusers_limit - 次に、に移動し
/detail/<id>、値として保存currently_selected_userし<id>ます...つまり、このようなものでユーザーのデータを取得できますusers.find(res => res.id === currently_selected_user) - 1 つのデータ セットとそれを指している詳細だけで作業しているので、更新も簡単です。
- 新しいユーザーの追加も簡単で、同じユーザーのリストを操作するだけです
このアプローチで私が抱えている問題は、ユーザーのリストが膨大になると (数百万人など)、ダウンロードに時間がかかる場合があることです。また、 に直接移動すると/detail/<id>、まだすべてのユーザーがダウンロードされていないため、必要なユーザーのデータだけを取得するには、最初にすべてをダウンロードする必要があります。1 つを編集するだけで何百万ものユーザー。
分離データセット
- に移動し
/list、すべてのユーザーを api からダウンロードする代わりに、 myusers_per_pageとのusers_current_page設定に応じて、いくつかのユーザーのみをダウンロードし、おそらくデータを次のように保存します。users_currently_visible - 次に、に移動し
/detail/<id>、値として保存currently_selected_userし<id>ます...そして、検索する代わりにusers_currently_visible、APIからユーザーのデータをダウンロードするだけです.. - 更新時に、私は決して更新するつもりはありませ
users_currently_visibleん - また、追加しません
ここで考えられる問題は、 にアクセスしたときに/list、API からデータを再度ダウンロードする必要があることです。これは、データベース内のデータと同期していない可能性があるためです。また、不必要にユーザー データを詳細にダウンロードしている可能性もあります。彼らは偶然にもすでに私の中にいるかもしれませんusers_currently_visible
ある種のフランケンシュタインの悪ふざけ
- 詳しくは、分離されたデータセットと同じことを行いますが、API からユーザーのデータを直接ダウンロードする代わりに、最初に確認します。
- 私は何か持っていますか
users_currently_visible - もしそうなら、それらの間に私のIDを持つユーザーがいますか? 両方が true の場合は、それをユーザー データとして使用し、それ以外の場合は API 呼び出しを行います。
- 私は何か持っていますか
- 更新時に同じことが起こります。ユーザーが存在するかどうかを確認し、存在する
users_currently_visible場合はそのリストも更新します。存在しない場合は何もしません
これはおそらくうまくいくでしょうが、それが適切な方法だとは思えません。users_currently_visibleまた、新しいリストを追加した可能性があるため、にアクセスしたときにの新しいリストをダウンロードする必要があるでしょう/list..
これを行うファンのお気に入りの方法はありますか?... redux ユーザーは誰もが同じことに遭遇したに違いないと確信しています。
ありがとう!