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中所述).

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...