mobx是采用的发布订阅模式的方式管理程序的状态。即:任何订阅了该状态值的程序,在该状态改变时都将接收到通知,然后做出响应。
参考mobx中文网 https://cn.mobx.js.org
注意:当我们定义一个某场景的专用状态类时,请确保只返回此状态类的唯一一个实例,这样各个组件之间数据才会同步,因为大家都是使用内存中的同一个对象。
例如:export defaul new Store();
- 黄金法则: 如果你想创建一个基于当前状态的值时,请使用 computed(新版Mobx中,改成js原生的get方法了,不使用装饰器了)。
- 当状态改变时,所有衍生都会进行原子级的自动更新。因此永远不可能观察到中间值。
- 所有衍生默认都是同步更新。这意味着例如:动作可以在改变状态之后直接安全地检查计算值。
- observable方法或装饰器,默认是递归调用的,即可观察对象的所有层级属性都是可观察的。
- 个人感觉:尽量使用observer包裹任何需要状态的组件,不管是子组件还是父组件。这有时会起到pure render的优化效果。
- 想要mobx起到监听的效果,我们在使用可观察对象时,不要转存它(不要赋值给其他变量再使用),请直接使用它。
- mobx会响应可观察对象自身的可观察属性的变化,而不是值,比如数组的length属性。