我目前正在潜入Redux水域,自从我明白减压器的概念简单之后,我不得不说我很兴奋.
然而,我在标题上提出的问题令我感到奇怪.
由于状态对象的不变性是Redux的核心支柱,因此.getState()
方法不应该返回currentState的副本,这样它就不会暴露在环境中,从而无法改变它吗?
最佳答案
这里有两个原因:1)在正确的Redux应用程序中,你永远不应该尝试直接改变State,所以getState()结果只能通过getter使用,因此不需要浪费时间和周期进行复制; 2)事实上,以正确的方式复制它并不容易.引用corresponding issue的相关讨论:
原文链接:https://www.f2er.com/js/428969.htmlYou’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中所述).