微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – Redux的.getState()不应该返回状态对象的副本吗?

我目前正在潜入Redux水域,自从我明白减压器的概念简单之后,我不得不说我很兴奋.

然而,我在标题上提出的问题令我感到奇怪.

由于状态对象的不变性是Redux的核心支柱,因此.getState()方法不应该返回currentState的副本,这样它就不会暴露在环境中,从而无法改变它吗?

最佳答案
这里有两个原因:1)在正确的Redux应用程序中,你永远不应该尝试直接改变State,所以getState()结果只能通过getter使用,因此不需要浪费时间和周期进行复制; 2)事实上,以正确的方式复制它并不容易.引用corresponding issue的相关讨论:

You’d have to due a deep object assign to truely destroy all
references and we wouldn’t want to do that,as you wouldn’t be able to
compare if a particular part of your state tree changed,which is
incredibly useful in React via shouldComponentUpdate.

尽管如此,人们可能会认为将Object.freeze()用于检索状态作为安全措施(防止在其他地方改变这样的对象)是有益的.然而,过多地传递结果状态很少是一种好的模式(如this answer中所述).

原文地址:https://www.jb51.cc/js/428969.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐