データベースに多数のエントリ (ユーザーなど) があるとします。リスト用と詳細用 (エントリを編集できる場所) の 2 つのルートもあります。今、データ構造にアプローチする方法に苦労しています。
私は2つのアプローチと、両方のちょっとした組み合わせを考えています。
共有データセット
- に移動し
/list
、すべてのユーザーが redux ストアに保存されている api からダウンロードされ、キーの下にとusers
を追加 して、リストの一部のみをレンダリングしますusers_offset
users_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 ユーザーは誰もが同じことに遭遇したに違いないと確信しています。
ありがとう!