Comment choisir le Redux état de forme pour une application à la liste/les vues de détail et la pagination?

Imaginer que j'ai un certain nombre d'entrées(par exemple, les utilisateurs) dans ma base de données. J'ai également deux itinéraires, l'un pour la liste, d'autres pour les détails(où vous pouvez éditer l'entrée). Maintenant, je suis aux prises avec la façon d'aborder la structure de données.

Je pense à deux approches et plutôt une combinaison des deux.

Partagés ensemble de données

  • Je navigue à /list, tous mes utilisateurs sont téléchargés à partir de l'api stockée dans redux magasin, sous la clé users, j'ai aussi ajouter une sorte de users_offset et users_limit pour que le rendu de la liste
  • Je puis accédez à /detail/<id>, et de stocker currently_selected_user avec <id> comme le val... ce qui signifie que je vais être en mesure d'obtenir mes données de l'utilisateur avec quelque chose comme ça users.find(res => res.id === currently_selected_user)
  • la mise à jour sera agréable et facile ainsi, depuis que je suis en train de travailler avec un seul ensemble de données et de détail montrant du doigt
  • l'ajout d'un nouvel utilisateur facile, encore une fois juste à travailler avec la même liste d'utilisateurs

Maintenant, le problème que j'ai avec cette approche est que, lorsque la liste des utilisateurs devient énorme(dire des millions), il pourrait prendre un certain temps à télécharger. Et aussi, quand je accéder directement à /detail/<id>, je ne dispose pas encore de tous mes utilisateurs ont téléchargé, de sorte à obtenir des données pour juste celui dont j'ai besoin, je vais devoir d'abord télécharger l'ensemble de la chose. Des Millions d'utilisateurs pour éditer un.

Séparées de l'ensemble de données

  • Je navigue à /list, et au lieu de télécharger tous mes utilisateurs de l'api, je ne l'ai télécharger un couple d'entre eux, selon ce que mon users_per_page et users_current_page serait réglé, et je serais probablement stocker les données que users_currently_visible
  • Je puis accédez à /detail/<id>, magasin currently_selected_user avec <id> comme le val...et au lieu de chercher à travers users_currently_visible j'ai simplement télécharger les données de l'utilisateur à partir de l'api..
  • sur la mise à jour, je ne vais pas mettre à jour users_currently_visible en quelque sorte
  • et ne je sur ajouter

Ce que je vois que possible problème ici est que je vais avoir, lors de la visite /list, télécharger les données de l'api de nouveau, car il pourrait ne pas être en phase avec ce qui est dans la base de données, j'ai aussi peut-être inutilement le téléchargement de données utilisateurs dans le détail, parce qu'ils pourraient être d'ailleurs déjà à l'intérieur de mon users_currently_visible

une sorte de frankenstein-y manigances

  • Je détaille, je fais la même chose que dans Séparées de l'ensemble de données mais au lieu de directement télécharger les données de l'utilisateur à partir de l'api, j'ai d'abord vérifier:
    • dois-je tout users_currently_visible
    • si oui, est-il un utilisateur avec mon id d'entre eux?
      si les deux sont vrais, je puis l'utiliser comme mes données d'utilisateur, sinon, je fais l'appel d'api
  • même phénomène se produit sur la mise à jour, je vérifie si mon utilisateur existe entre users_currently_visible si oui, je l'ai aussi mise à jour de cette liste, sinon je ne fais rien

Ce serait probablement travailler, mais n'a pas vraiment l'impression que c'est la bonne façon. Je voudrais aussi probablement encore besoin de télécharger la nouvelle liste de users_currently_visible lors de la visite /list, parce que j'ai peut-être ajouté un nouveau..

Est-il un favori des fans façon de le faire?... Je suis sûr que chacun redux utilisateur doit avoir rencontré les mêmes choses.

Merci!

  • Dans notre application, nous sommes actuellement à l'aide de la "séparé de l'ensemble de données" approche. Il fait plus d'appels à votre API, mais il fonctionne. Mais de toute façon, il se sent comme la meilleure solution à l'aide d'un seul ensemble de données. Je ne suis pas sûr de cela aussi.
  • Je pense que ça vient de la façon dont nombre d'entrées que vous avez dans la base de données, ce jsonplaceholder.typicode.com/photos est de 5000 articles et c'est déjà de 900 ko..
  • Oui, vous avez raison. Mais sur le plan conceptuel, il semble que la bonne approche est d'utiliser le même ensemble de données. De toute façon, nous nous penchons sur ces deux entrées dans l'état d'application suivants: une brève liste contenant uniquement les données nécessaires pour afficher la liste détaillée de l'objet contenant tous les accessoires lors de l'ajout, l'édition, etc. Il est techniquement mieux, mais je voudrais avoir le tout en un ensemble de données sans avoir des problèmes de performances 🙂
InformationsquelleAutor fxck | 2015-11-26