Writing…
Mobx 源码解读(六) Action
Mobx 提供 action API 供用户声明修改应用状态的函数。Mobx 进行了一层简单的包装,提供事务功能,可以在 action 内进行多次 Observable 的修改,而不用担心 Reaction 的多次重新执行;同时支持 spy,可以在开发工具中观察到 action 的执行。
Mobx 源码解读(四) Reaction
Reaction 是一类的特殊的 Derivation,可以注册响应函数,使之在条件满足时自动执行。常用于触发副作用,比如打印日志、更新 DOM 或者发送网络请求。
Mobx 源码解读(三) Modifier
前面讨论 Observable 时,提到 Mobx 默认使用 deepEnhancer 来包装生成可观察的值,即递归地将该值的属性或元素(如果有)都转换成可观察的。Mobx 提供了五种类型的 Modifier,可以改变这种默认行为,本篇文章我们来看看 Modifier 的原理和实现。
Mobx 源码解读(二) Observable
Mobx 提供了三种可观察的数据类型:对象、数组和 Map。Mobx 内部做了大量的工作,使它们的使用体验和原生 JS 类型一致,通过 observable api 包装后就可以转换成可观察值,使用时无须额外的方法调用。对于其它类型的值,Mobx 提供了 observable.box,包装之后使用其 get, set 方法来获取和设置值,也可以达到「可观察」的效果。
第一篇中提到,Observable 使用 reportObserved 和 propagateChanged 函数通知自身「被观察」和「发生变化」。将值变得可观察的关键步骤就在于触发这两个函数的调用,先来看看不同类型的 Observable 是如何实现这一点的。
Mobx 源码解读(一) 基本概念
项目中使用 Mobx 有一段时间了,与 Redux 相比,自己最直观的感受就是避免了 Redux 中大量的样板代码。不需要再去写 action creator, reducer 等,应用的状态直接在 Action 内修改,Mobx 会自动管理依赖的更新和副作用的触发。
由于想看看 Mobx 是如何实现优雅的状态管理,于是花时间研究了下 Mobx 源码。通过这几篇文章记录一些自己的理解,作为以后项目中的参考,避免项目中可能踩到的各种坑。