MobX 内部机制深度解析
1. 计算值(ComputedValue)特性
计算值(ComputedValue)在 MobX 中是一个重要的概念。它不依赖于原子(Atom),在 reportObserved() 方法上采用了不同的实现方式。这是一种底层实现,用于建立可观察对象与观察者之间的连接,并且原子(Atom)内部也使用了相同的机制,以确保行为的一致性。
计算值主要是只读的可观察对象。虽然 MobX 提供了设置计算值的方法,但在大多数情况下,这并没有太大意义。因为设置计算值需要执行与获取器相反的计算,而这在很多情况下几乎是不可能的。例如,购物车的描述是一个计算值,它从其他可观察对象(如商品和优惠券)生成一个字符串。要为这个计算属性编写设置器,就需要解析字符串并得出商品和优惠券的值,这显然是不可行的。因此,通常应将计算值视为只读的可观察对象。
计算值依赖于其他可观察对象,其实际值的计算更像是一种副作用,是依赖的可观察对象发生变化的结果。MobX 将这种计算称为派生(derivation),派生与反应(reaction)同义,强调了计算的副作用方面。
在依赖树中,计算值是唯一既是可观察对象又是观察者的节点类型。它的值是可观察的,同时由于依赖于其他可观察对象,它也是一个观察者。不同类型的节点角色如下:
| 节点类型 | 角色 |
| ---- | ---- |
| ObservableValue | 仅为可观察对象 |
| Reaction | 仅为观察者 |
| ComputedValue | 既是可观察对象又是观察者 |
超级会员免费看
订阅专栏 解锁全文
868

被折叠的 条评论
为什么被折叠?



