Devriez-vous jamais utiliser this.setState () lors de l'utilisation de redux?
111
Devriez-vous jamais utiliser this.setState()lors de l'utilisation de redux? Ou devriez-vous toujours envoyer des actions et compter sur des accessoires?
Il n'y a rien de mal à avoir certains composants avec l'état.
zerkms
3
Cela dépend complètement de l'endroit où l'État est utilisé. Pensez aux magasins Redux comme étant mondiaux. Tout ce qui n'a pas besoin d'être global peut rester privé pour un composant et ses enfants.
azium
Réponses:
139
Les utilisations claires de setStateseraient pour les composants d'interface utilisateur qui ont un état d'affichage local, mais qui ne sont pas pertinents pour l'application globale. Par exemple, un booléen qui représente si un menu déroulant spécifique est activement affiché n'a pas besoin d'être dans l'état global, il est donc plus commodément contrôlé par l'état du composant de menu.
D'autres exemples peuvent inclure l'état de réduction / expansion des lignes dans un affichage en accordéon d'une hiérarchie. Ou peut-être l'onglet actuellement sélectionné dans la navigation par onglets. Cependant, dans ces deux exemples, vous pouvez toujours choisir de gérer l'état de l'interface utilisateur globalement. Par exemple, cela serait nécessaire si vous vouliez conserver l'état d'expansion / réduction dans le stockage du navigateur afin qu'il soit conservé par l'actualisation de la page.
En pratique, il est généralement plus simple d'implémenter ces éléments d'interface utilisateur avec l'état local et de les refactoriser en état global si nécessaire.
Réponses:
Les utilisations claires de
setState
seraient pour les composants d'interface utilisateur qui ont un état d'affichage local, mais qui ne sont pas pertinents pour l'application globale. Par exemple, un booléen qui représente si un menu déroulant spécifique est activement affiché n'a pas besoin d'être dans l'état global, il est donc plus commodément contrôlé par l'état du composant de menu.D'autres exemples peuvent inclure l'état de réduction / expansion des lignes dans un affichage en accordéon d'une hiérarchie. Ou peut-être l'onglet actuellement sélectionné dans la navigation par onglets. Cependant, dans ces deux exemples, vous pouvez toujours choisir de gérer l'état de l'interface utilisateur globalement. Par exemple, cela serait nécessaire si vous vouliez conserver l'état d'expansion / réduction dans le stockage du navigateur afin qu'il soit conservé par l'actualisation de la page.
En pratique, il est généralement plus simple d'implémenter ces éléments d'interface utilisateur avec l'état local et de les refactoriser en état global si nécessaire.
la source
setState
est tout à fait correcte