第一章:
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,将这个选项勾上就行。