我目前正在潜入Redux水域,自从我明白减压器的概念简单之后,我不得不说我很兴奋.
然而,我在标题上提出的问题令我感到奇怪.
既然状态对象的不变性是Redux的核心支柱,那么该.getState()方法不应该返回一个副本currentState,这样它就不会暴露在环境中,从而无法改变它吗?
这里有两个原因:1)在一个合适的 Redux 应用程序中,你永远不应该尝试直接改变 State,因此getState()结果只能通过 getters 使用,因此不需要在复制上浪费时间和周期;2)事实上,要以正确的方式复制它并不那么容易。引用相应问题的相关讨论:
你必须通过深层对象分配来真正销毁所有引用,而我们不想这样做,因为你无法比较状态树的特定部分是否发生变化,这在 React 中非常有用通过 shouldComponentUpdate。
尽管如此,人们可能会认为使用Object.freeze()过度检索的状态作为一种保护措施(防止在其他地方改变这样的对象)是有益的。然而,传递过多的结果状态很少不是一个好的模式(正如这个答案中提到的)。
| 归档时间: |
|
| 查看次数: |
1856 次 |
| 最近记录: |