在store里面去映射一个函数,这个函数会根据原有的值進行自动响应式的修改返回一个新值。最后触发一个Reactions类似于redux的subscribe,给reactions传两个函数第一个函数是我检测的变量的列表,或者state列表第二個函数就是要检测变化的回调函数,可以再去调Actions做新的触发。
因为store要返回全新的所以适合用immitable。
它自动做了响应式处理不像redux需要订阅。
装饰器:@action和@observable增强原有的类或方法的能力类似于高阶组件。
ES6的装饰器在react中有时不支持要安装插件
数组、对象、ES6中的map等都可以变成可观察的。
如果想让数值变成可观察的使用box()或get()、set()
(2)写法二:必须要写在类中
目的:自己可以做深度的webpack配置。这个过程是不可逆的
3.安装支持装饰器的插件(typescript下的项目不需要装)
(2)@computed 计算属性作为装饰器,必须在函数前面加get它不需要调用,可以直接读取
when有两個参数,都是回调函数当第一个参数返回true的时候,第二个参数才会执行
第一个参数是函数,有返回值data第二个参数也是一个函数,这個函数又有两个参数第一个参数是前面的返回值data,第二个参数是reaction
和autorun的不同点是reaction第一次不执行,只有修改之后执行
我在使用mobx和react配合时修改数据直接就是this.props.store.a = 'hello' 这样也是可以工作的,但是教程说推荐使用action来修改使用action有什么好处吗?像我这樣修改一个值要写一个action的话那更改每一个都要写一个action不是很麻烦?
'a',也是可以的但是你这样做过吗?肯定是不行的因为你这样就算改叻state,也不会触发react的重新渲染反而会导致数据和视图不一致。所以react提供里setState这个api用来改变state这样可以重新触发react的渲染周期2.mobx和redux以及state一样,都是儲存数据的对象而已但是mobx和redux是全局的,说到底也只是个对象你这么改它当然能改,但只是改了而已并没有触发mobx和redux的一些动作。所以從这个意义上来说action就像是setState,是改变这个状态树的方式通过调用action触发reducer,从而改变数据树这个可以保证mobx或redux正常工作,且数据和视图保持┅致3.不是修改一个值写一个action,而是一个action对应一件事不同的事对应不同的action,触发对应的reducer这样可以让mobx或redux知道,是什么动作导致了什么结果
里面内置的transaction可以避免多个observable的修改导致不必要的多次渲染
打开App,查看更多内容
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。