认识
2023年05月28日
一、认识
Vue
的响应性系统是通过深度转换普通 JavaScript
对象为响应式代理来实现的。这种深度转换在一些情况下是不必要的,在和一些外部状态管理系统集成时,甚至是需要避免的 (例如,当一个外部的解决方案也用了 Proxy
时)。
将 Vue
的响应性系统与外部状态管理方案集成的大致思路是:将外部状态放在一个 shallowRef
中。一个浅层的 ref
中只有它的 .value
属性本身被访问时才是有响应性的,而不关心它内部的值。当外部状态改变时,替换此 ref
的 .value
才会触发更新。
如果你正在实现一个撤销/重做的功能,你可能想要对用户编辑时应用的状态进行快照记录。然而,如果状态树很大的话,Vue
的可变响应性系统没法很好地处理这种情况,因为在每次更新时都序列化整个状态对象对 CPU
和内存开销来说都是非常昂贵的。
不可变数据结构通过永不更改状态对象来解决这个问题。与 Vue
不同的是,它会创建一个新对象,保留旧的对象未发生改变的一部分。在 JavaScript
中有多种不同的方式来使用不可变数据。