2017-09-22 11 views
3

En redux, je comprends que l'état est immuable et lorsque vous créez un nouvel état, vous mettez essentiellement à jour l'objet avec de nouvelles informations, puis vous réécrivez totalement l'état.L'état de réécriture est-il coûteux en calcul dans Redux?

Aujourd'hui j'ai eu une pensée et je ne suis pas sûr à quel point c'est stupide.

Est-il coûteux en coût de continuer à réécrire l'état? Je sais que c'est l'un des paradigmes majeurs de Redux, mais je veux savoir si cela a un sens du point de vue de la mémoire et de l'espace.

Répondre

6

Vous êtes autorisé à muter l'état Redux, mais vous ne devriez pas le faire à tout prix parce que vous seriez codage dans Redux anti-patterns

objets La mutation, en JavaScript vanille ou dans tout cadre, peut apporter beaucoup Side- effets avec ce qui pourrait être très douloureux à déboguer. Vous devriez opter pour pure functions à moins qu'il soit nécessaire de muter.

Maintenant retour à Redux, les fonctions dans les réducteurs doivent être fonctions pures. voici pourquoi:

Redux algorithm vérifie si un état a été mis à jour en comparant l'emplacement de mémoire de l'état précédent et l'état suivant. Maintenant, lorsque vous mutez un objet en JavaScript, vous mettez simplement à jour un objet existant et, par conséquent, l'emplacement de la mémoire reste le même et le magasin n'est pas mis à jour. La mutation de l'état désactive également une fonctionnalité essentielle de Redux devtools, qui se déplace dans le temps pour déboguer. D'un autre côté, si au lieu de muter l'objet vous en créez un nouveau, quand redux compare l'emplacement mémoire de previousState (l'état avant de le changer) et le nextState (le nouveau que vous avez envoyé), Redux à ce stade se rend compte qu'il y a eu un changement et il met à jour le magasin avec votre dernier état.

Références: