Quelles sont vos bonnes pratiques pour le préchargement initialState dans votre Redux apps?

Je ne suis pas heureux avec les hacks, je suis venu avec l'aide de Flux, et maintenant Redux pour le remplissage de initialState dans mon magasin.

J'ai toujours envoyer une charge utile de JSON vers le bas avec le chargement initial de la page. Universel JavaScript n'est pas une option dans certaines de mes applications car ils ne sont pas tous soutenus par le Nœud. Je voudrais mettre l'accent sur les "meilleures pratiques" et des modèles autour de la façon dont les données sont préchargés sur le client. Puis, je sens que la migration vers le serveur est trivial.

Voici un résumé de ce que je suis en train de faire le travail, et dans quelques autres jouets apps à l'aide de Redux:

https://gist.github.com/kevinold/5767bb334472b7e2bfe3

Pour résumer:

  • Je suis l'envoi de variables globales en bas de la page
  • Dans componentDidMount() je suis le dispatching des actions que “recevoir” et de manipuler les différents éléments de données. (Ces “recevoir” méthodes sont utilisées lors du traitement de ces bits de données lorsqu'ils sont récupérés asynchrone via une demande d'action, et je suis à la réutilisation d'ici, puisque j'ai déjà données.)

Cela fonctionne, et il n'y a pas toute les questions que nous sommes en cours d'exécution, mais il se sent comme un hack, je ne suis pas vraiment heureux avec. Aussi, j'ai l'impression que l'état initial de Redux n'est pas heureux avec moi de cette façon.

Selon http://rackt.org/redux/docs/recipes/ServerRendering.html et à la section “Côté Client”, je suis capable de passer initialState à mon magasin.

Voici un patch que j'ai pour un autre projet, je travaille avec (KeystoneJS). Je suis de passage il est Keystone objet dans le initialState:

https://github.com/kevinold/keystone/commit/6f80c2f6f1e5c081361369a8bb31b75f1e62460f#diff-cd8e9933209e834b0519a0257bcfa914R8

Tout qui fonctionne, comme vous pouvez le voir, je suis obligé de s'adapter à la forme de la sortie de l'ensemble de mon combinedReducers (https://github.com/kevinold/keystone/commit/6f80c2f6f1e5c081361369a8bb31b75f1e62460f#diff-b4b498ca92c4d05e050b45c725c26f9d) ou j'aurai la console de mises en garde, etc.

Je suis peut-être très paresseux à traiter avec cela, mais en essayant de limiter la mise à jour d'un autre morceau de données lorsque je ajouter/changer quoi que ce soit liés à des réducteurs (ajouter un réducteur, la façon dont ils sont composés, etc.).

J'ai réalisé que je pourrais avoir à faire à la initialState dans les réducteurs correctement.

Je suis en train de digérer comment (https://github.com/erikras/react-redux-universal-hot-example/blob/master/src/client.js#L25) gère son initialState.

J'apprécierais vraiment que certains des commentaires sur "le meilleur" et le "monde réel" des pratiques qui travaillent pour les autres.

  • Je vais voter pour fermer cette question hors-sujet parce que c'est un document en question, mais appartient à codereview
InformationsquelleAutor Kevin Old | 2015-11-25