2017-10-11 1 views
1

Je travaille sur la conception du côté Redux d'une application, en particulier mon objet State.Redux: Array ou Object pour stocker une liste de blogs?

Je vais utiliser une API POST semblable à ceci:

/api/posts 

avec une méthode POST.

Si je suivais les règles que j'ai utilisées dans le passé, je finirais avec une propriété posts et une propriété activePost sur mon objet d'état global. La propriété posts qui serait vraisemblablement produite par leurs réducteurs de messages serait probablement un tableau et il contiendrait la liste de tous les différents messages que j'ai dans l'application.

Je veux stocker ma liste de publications à l'intérieur d'un objet plutôt que d'un tableau et éliminer complètement le besoin de l'activePost. Donc, il ressemblerait à ceci:

{ 
    4: {title: 'Hello', id: 4, content: 'Hi', tags: 'greetings'}, 
    12: {title: 'Bye', id: 12, content: 'Bye', tags: 'greetings'}, 
} 

Notez que l'intérieur de cet objet, je dis que la clé est l'identifiant du poste et la valeur est le poste lui-même. Ainsi, l'objet commence au numéro 4 et se ferme à l'accolade terminale. Il a un identifiant de 4 et en utilisant une clé de 4 parce que c'est l'identifiant de la poste. Même chose pour le prochain ci-dessous.

La raison en est de faciliter la recherche d'un article particulier parmi tous les messages que je vais chercher.

Est-ce que cela peut fonctionner même avec de grands ensembles de messages? Serait-ce la meilleure pratique? Pourquoi ou pourquoi pas? Si cela ne sert à rien, veuillez fournir une raison documentée. Je vous remercie.

+0

Hey, je ne modifie pas la permission. Alors pouvez-vous s'il vous plaît ajouter plus de balises comme redux, javascript. De cette façon, il atteindra plus d'audience. Merci – vs1682

Répondre

0

Je crois que c'est la meilleure pratique, en fait, un concept très avancé. J'ai entendu des collègues dire qu'un tableau fonctionne mieux pour les grands ensembles de données, mais pas beaucoup de documentation pour sauvegarder leurs revendications.

Cela aurait probablement besoin d'un refactoring très difficile avec quelque chose comme:

state.posts[postId] 

ce qui renverrait le poste donné, le postId provenant du numéro d'identification de l'URL et en utilisant ce numéro pour rechercher contre l'objet des nombreux messages différents. Je comprends que c'est ainsi que cela se fait en production et avec de grandes applications qui évoluent bien, donc cela fonctionnerait réellement avec des données volumineuses.