认识
一、认识
Mobx
采用了一种观察者模式—— Observer
,整个设计架构都是围绕 Observer
展开:
-
在
mobx
的状态层,每一个需要观察的属性都会添加一个观察者,可以称之为ObserverValue
-
有了观察者,那么就需要向观察者中收集
listener
,mobx
中有一个Reaction
模块,可以对一些行为做依赖收集,在React
中,是通过劫持render
函数执行行为,进行的依赖收集。 -
如何监听改变,用自定义存取器属性中的
get
和set
,来进行的依赖收集和更新派发,当状态改变,观察者会直接精确通知每个listener
。
二、思想
2.1 状态提升
在正常情况下,在 React
应用中使用 Mobx
,本质上 mobx
里面的状态,并不是存在 React
组件里面的,是在外部 由一个个 mobx
的模块 model
构成,每一个 model
可以理解成一个对象,状态实质存在 model
中,model
状态通过 props
添加到组件中,可以用 mobx-react
中的 Provider
和 inject
便捷获取它们,虽然 mobx
中响应式处理这些状态,但是不要试图直接修改 props
来促使更新,这样违背了 React Prop
单向数据流的原则。正确的处理方法,还是通过 model
下面的 action
方法,来改变状态,React
实质上调用的是 action
方法。
2.2 观察者模式
Mobx
采用了一种观察者模式—— Observer
,整个设计架构都是围绕 Observer
展开:
-
在
mobx
的状态层,每一个需要观察的属性都会添加一个观察者,可以称之为ObserverValue
-
有了观察者,那么就需要向观察者中收集
listener
,mobx
中有一个Reaction
模块,可以对一些行为做依赖收集,在React
中,是通过劫持render
函数执行行为,进行的依赖收集。 -
如何监听改变,用自定义存取器属性中的
get
和set
,来进行的依赖收集和更新派发,当状态改变,观察者会直接精确通知每个listener
。