15、MobX 内部机制深度解析

MobX 内部机制深度解析

1. 计算值(ComputedValue)特性

计算值(ComputedValue)在 MobX 中是一个重要的概念。它不依赖于原子(Atom),在 reportObserved() 方法上采用了不同的实现方式。这是一种底层实现,用于建立可观察对象与观察者之间的连接,并且原子(Atom)内部也使用了相同的机制,以确保行为的一致性。

计算值主要是只读的可观察对象。虽然 MobX 提供了设置计算值的方法,但在大多数情况下,这并没有太大意义。因为设置计算值需要执行与获取器相反的计算,而这在很多情况下几乎是不可能的。例如,购物车的描述是一个计算值,它从其他可观察对象(如商品和优惠券)生成一个字符串。要为这个计算属性编写设置器,就需要解析字符串并得出商品和优惠券的值,这显然是不可行的。因此,通常应将计算值视为只读的可观察对象。

计算值依赖于其他可观察对象,其实际值的计算更像是一种副作用,是依赖的可观察对象发生变化的结果。MobX 将这种计算称为派生(derivation),派生与反应(reaction)同义,强调了计算的副作用方面。

在依赖树中,计算值是唯一既是可观察对象又是观察者的节点类型。它的值是可观察的,同时由于依赖于其他可观察对象,它也是一个观察者。不同类型的节点角色如下:
| 节点类型 | 角色 |
| ---- | ---- |
| ObservableValue | 仅为可观察对象 |
| Reaction | 仅为观察者 |
| ComputedValue | 既是可观察对象又是观察者 |

2. 计算值的高效计算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值