web-dev-qa-db-fra.com

Quand dois-je choisir React state Vs Redux Store

J'ai appris Redux et je ne comprends pas très bien comment puis-je déterminer entre l'utilisation de l'état réactif par rapport au magasin redux et l'envoi d'actions. D'après mes lectures jusqu'à présent, il semble que je pourrais utiliser l'état React à la place du magasin Redux et continuer à faire avancer les choses. Je comprends la séparation des préoccupations entre l’utilisation de Redux store et le fait d’avoir 1 composant conteneur et le reste en tant que composant sans état, mais comment déterminer quand utiliser React state Vs redux store n’est pas très clair pour moi. Puis-je avoir une aide s'il vous plait?

Merci!

21
InfiniteLoop

Si l'état n'a pas besoin d'être partagé avec d'autres composants, ou si l'état n'a pas besoin d'être conservé lorsque le composant est démonté, vous pouvez simplement le mettre dans l'état du composant.

Vous pouvez penser que le magasin Redux est la base de données front-end. Si vous avez quelque chose comme des données de produit extraites d'une API, le magasin Redux est le bon endroit. Si vous avez un composant de liste déroulante, qui prend un prop isOpen, le parent de cette liste déroulante peut simplement conserver dropdownIsOpen en tant qu'état de composant.

Pour plus d'informations, voici la réponse de Dan: https://github.com/reactjs/redux/issues/1287

Aussi vous avez dit 

1 seul composant conteneur et le reste en tant que composant sans état

Ceci est une erreur. Vous pouvez avoir plusieurs composants de conteneur. Un composant conteneur peut également contenir un autre composant conteneur.

29
CodinCat

Vous avez absolument raison. Redux (et l'architecture de flux en général) ne sont que des outils de formalisme permettant de créer de grandes applications. Ils ne sont pas du tout nécessaires.

Il y a en fait un article intéressant intitulé Vous pourriez ne pas avoir besoin de redux de Dan Abramov, le créateur de redux, qui pourrait vous donner une meilleure réponse que moi: https://medium.com/@dan_abramov/you-might-not-need -redux-be46360cf367 # .7093fm1z8

1
Axnyff

Du livre:

Tout d’abord, nous devons toujours garder à l’esprit que seul le minimum quantité de données nécessaires doit être mis à l'état. Par exemple, si nous avoir à changer une étiquette quand un bouton est cliqué nous ne devrions pas stocker le texte de l'étiquette, mais nous ne devrions enregistrer qu'un indicateur booléen qui nous dit si le bouton a été cliqué ou non. Deuxièmement, nous devrions ajoutez à l'état uniquement les valeurs que nous souhaitons mettre à jour lorsqu'un événement arrive, et pour lequel nous voulons rendre le composant re-rendre . Une autre façon de savoir si l’État est le bon endroit pour stocker des informations est de vérifier si les données que nous persistons est nécessaire en dehors du composant lui-même ou par ses enfants. Si plusieurs les composants doivent garder la même information, nous devrions Pensez à utiliser un gestionnaire d'état comme Redux au niveau de l'application.

1
zloctb