MobX 实用工具与内部机制深度解析
1. MobX-State-Tree 实用特性
1.1 不可变快照(Immutable Snapshots)
MST 会在内存中保留状态树的不可变版本,可通过getSnapshot()API 获取。例如:
const snapshot = getSnapshot(tree);这与const tree = Type.create(snapshot)是互逆操作。getSnapshot()能方便地快速序列化整个状态树。由于 MST 由 MobX 驱动,也可对其进行跟踪。
以下代码会在状态树每次更改时,将其状态存储在本地存储中,但每秒最多存储一次:
import { reaction } from 'mobx'; import { getSnapshot } from 'mobx-state-tree'; const app = App.create(/* as before */); reaction( () => getSnapshot(app), snapshot => { window.localStorage.setItem('app', JSON.stringify(snapshot)); }, { delay: 1000 }, );