mobx如何永久性还是永久修改一个Observable的值

  • action是一个函数事件调用actions直接修改state,Actions是唯一可以修改state的东西并且可能有副作用,副作用是修改完之后会激起一些计算属性的更新。
  • state是可观测的(@observable)不能包含冗余或者嶊导数据,可以是数组啊类啊,等等
  • Reactions当观察的东西发生变化,就可以做一些事情

在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时修改state可以不用action为什么教程里强调要使用?

我在使用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,查看更多内容

}

我要回帖

更多关于 永久性 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信