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

前端之家收集整理的这篇文章主要介绍了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中所述).

猜你在找的JavaScript相关文章