92 votes

Réagir avec Redux? Qu'en est-il du problème du "contexte"?

Normalement, je post 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 composant de l'arbre.

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

Sur les Réagissent Contexte de la page (https://facebook.github.io/react/docs/context.html) il a un avertissement en haut:

Le contexte est une avancée et fonctionnalité expérimentale. L'API est susceptible de changer dans les futures versions.

Ensuite, 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...

Alors...

Redux recommande l'utilisation de la Réagissent "Contexte" de la fonctionnalité plutôt que de passer à l' 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..?

93voto

Dan Points 16670

Le 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 les changements de contexte de son comportement, nous, en tant que bibliothèque des auteurs aura besoin de s'adapter. 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.

5voto

Vi3GameHkr Points 519

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X