MobX 学习 笔记

676 阅读2分钟

第一章:

mobx是状态管理框架,react使用mobx提供的机制来存储和更新应用程序。

react提供了机制优化渲染UI使用虚拟DOM,减少高代价的DOM突变数量。Mobx提供机制优化同步应用程序状态和React组件通过使用活性虚拟依赖状态图,只有当严格需要更新,永远不会过期

Npm install mobs --save,react绑定库:npm install mobs-react --save

事件调用actions,actions是唯一可以修改state的东西并且可能有其他的副作用;

@action onclicck = () =>{}

state是可观察和最低限度定义的,不包含冗余或推导数据,可以是图形,包含类,数组,引用等等。

@observable todos = [{}]

computed values是可以使用pure function 从state 中推导出的值,mobx会自动更新它并在它不再使用时将其优化掉。

@computed get comsumes(){}

reactions很像computed values,会对states的变化做出反应,但他们不产生一个值,而是会产生一些副作用,像更新url

如果你用react的话,可以把你的(无状态函数)组件变成响应式组件,方法是在组件上添加observer函数/装饰器。observer由mobx-react包提供的。

Const todos = observer( (todos)=>{ })

@computed get 自定义函数将被缓存

@computed用于计算值,有点像excel表格的计算

@action.bound 不要和箭头函数一起使用;箭头函数已经是绑定过的并且不能重新绑定。

@observable 装饰器可以在ES7或者typescript类属性中使用

第二章:

mobx和redux的区别:都是用于状态管理

以前用的是mirrorx来管理redux,所以对mobx很陌生

redux函数式编程,mobx响应式编程,

mobx更自由,redux更规范

mirrorx格式: model({
state: ...,
reducers: {
aaa(playload)
bbb(playload)
},
effects: {
ccc(playload)
ddd(playload)
} })

爬坑指南:对修饰器的实验支持功能在将来的版本中可能更改。在 "tsconfig" 或 "jsconfig" 中设置 "experimentalDecorators" 选项以删除此警告:这个方法是最简单的==》Windows => 打开vs code上的 文件--首选项--设置界面,然后搜索experimentalDecorators,将这个选项勾上就行。