我很好奇mobx如何在幕后工作。
如果我有一个既是观察者又包含observables的组件:
@observer
export default class Form extends Component {
@observable submitted = false;
@action.bound
submit() {
}
}
mobx如何在不使用setState的情况下重新渲染,还是使用setState?
见:https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254。 @observer
基本上是autorun(() => this.render())
的简写(它实际上有点复杂,但这就是它的概念归结为)
MobX使用Object.defineProperty()
将其自己的功能包装到分配运算符。当你写像form.submitted = false
这样的东西时,实际上会调用一个MobX方法。另见https://twitter.com/dan_abramov/status/741633922694586368和https://x-team.com/blog/es5-object-defineproperty-method/。