Réagir avec Redux? Quel est le "contexte" de l'enjeu?
J'ai l'habitude de poster le code de choses liées à la Pile, mais c'est plus une question au sujet de ce que le général de pensées de la communauté.
Il semble y avoir beaucoup de gens prônant l'utilisation Redux à Réagir à gérer des données/de l'état, mais lors de la lecture et de l'apprentissage à la fois je suis tombé sur quelque chose qui n'est pas tout à fait regarder à droite.
Redux
Au bas de cette page: http://redux.js.org/docs/basics/UsageWithReact.html (en Passant devant le Magasin), il recommande l'utilisation de la "Magie" de Réagir "Contexte".
Une option serait de passer comme un accessoire pour chaque composant conteneur. Cependant, il devient fastidieux, comme vous l'avez de fil du magasin, même à travers la présentation des composants juste parce qu'ils arrivent à rendre un récipient profond dans le volet d'arborescence.
L'option que nous recommandons est d'utiliser un spécial Réagir Redux composant appelé, par magie, faire les magasin disponible pour tous les composants conteneurs...
Réagir
Réagir sur le Contexte de la page (https://facebook.github.io/react/docs/context.html) il y a un avertissement en haut:
Contexte est une avancée et fonctionnalité expérimentale. L'API est susceptible de changer dans les futures versions.
Puis en bas:
Tout comme les variables globales sont à éviter lors de la rédaction d'un code clair, vous devriez éviter d'utiliser le contexte dans la plupart des cas...
Ne pas utiliser le contexte pour transmettre les données de votre modèle par le biais de composants. Enfilage de vos données par le biais de l'arbre explicitement est beaucoup plus facile à comprendre...
Donc...
Redux recommande l'utilisation de la Réagissent "Contexte" de la fonctionnalité plutôt que de passer à la store
le long de chaque composant par l'intermédiaire du 'accessoires'. Alors que Réagir recommande le contraire.
Aussi, il semble que Dan Abramov (le créateur de Redux) travaille maintenant pour Facebook (le créateur de Réagir), juste pour me confondre plus.
- Suis-je la lecture de tout cela..?
- Qu'est-ce que le courant général de consensus sur cette question..?
- Ahh c'est une excellente question, je suis très curieux d'entendre les points de vue des uns et des autres! Je suis un peu peur ça sera fermée en raison de la discussion aspect. J'espère vraiment qu'il ne le fait pas.
Vous devez vous connecter pour publier un commentaire.
Contexte est une fonctionnalité avancée et est sujette à changement. Dans certains cas, ses convenances l'emportent sur ses inconvénients, donc certaines bibliothèques, comme Réagir Redux et de Réagir Routeur choisir de s'appuyer sur elle, malgré le caractère expérimental.
L'important est ici le mot bibliothèques. Si le contexte change son comportement, nous que les auteurs de bibliothèques ont besoin d'ajuster. Toutefois, aussi longtemps que la bibliothèque ne vous demande pas d'utiliser directement le cadre de l'API, vous en tant que l'utilisateur ne devrait pas avoir à se soucier des modifications.
Réagir Redux utilise le contexte à l'intérieur, mais il n'expose pas de ce fait dans l'API publique. Donc, vous devriez vous sentir beaucoup plus en sécurité dans un contexte via Réagir Redux que directement parce que si elle change, le fardeau de la mise à jour du code sera à Réagir Redux et pas vous.
En fin de compte Réagir Redux prend toujours en charge en passant toujours stocker comme un accessoire donc, si vous voulez éviter complètement le contexte, vous avez le choix. Cependant, je dirais que c'est impossible.
TLDR: Éviter l'utilisation d'un contexte directement sauf si vous savez vraiment ce que vous faites. À l'aide d'une bibliothèque qui arrive à s'appuyer sur le contexte interne est relativement sûr.
Je ne sais pas pour les autres, mais je préfère utiliser réagir-redux connect décorateur d'emballer mes composants de telle sorte que seuls les accessoires de la boutique j'ai besoin sont passés dans mon composant. Ceci justifie l'utilisation de contexte dans un sens parce que je ne suis pas en consommer (et je sais, comme une règle, le code que je suis en charge de n'en consomme).
Quand je l'ai tester mes composants, j'ai tester la non-enveloppé composant. En raison de réagir-redux transmis uniquement les accessoires, j'ai besoin de ce composant, je sais maintenant exactement ce que les accessoires, j'ai besoin quand je suis en train d'écrire les tests.
Je suppose que le point est, je ne suis pas toujours voir le mot contexte dans mon code, je n'ai pas le consommer, donc, à un certain degré, il n'a pas d'incidence sur moi! Cela ne veut pas dire n'importe quoi sur Facebook est "expérimental" avertissement.. Si le contexte a disparu, je serais tout aussi vissé comme tout le monde, jusqu'à ce que Redux a été mis à jour.
Provider
etconnect
de faire abstraction de tout le Contexte des choses. Je suppose qu'avec Dan Abramov maintenant sur FB que vous espérer que si le Contexte a changé Redux et "réagir-redux" serait mis à jour... Mais aucune garantie si, et FB est "expérimentale" d'avertissement est toujours là pour tout voir.Il y a un mécanisme national de prévention module qui le rend vraiment facile d'ajouter redux à réagir contexte
https://github.com/jamrizzi/redux-context-provider
https://www.npmjs.com/package/redux-context-provider