连接商店时Mobx.inject和Mobx.observer之间的主要区别是什么?

时间:2016-07-26 13:48:42

标签: javascript reactjs mobx

我开始将我的商店连接到mobx。 我想知道使用observer(['store'],...)或使用inject('store')(observer(...))

之间的区别

我认为注入的主要区别不是反应性。那么注入观察者的意图究竟是什么呢?

1 个答案:

答案 0 :(得分:6)

observer(['store'], Component)inject('store')(observer(Component))之间没有区别。

observer装饰器检查第一个参数是否为数组。如果是数组,则调用inject internally

function observer(arg1, arg2) {
...
 if (Array.isArray(arg1)) {
   ...
   return inject.apply(null, arg1)(observer(arg2));
  }
...

但是,您可以在injectobserver之间添加更多装饰器。在这种情况下,会有一些区别:中间装饰者可以访问注入的道具。如果你不使用inject,外部装饰者显然无法访问注入的道具。

inject只是一种注入道具的便捷方式,因为MobX已经具有在上下文中传递内容的机制。在你不得不使用另一个库(例如react-tunnel)之前,如果你想将道具注入一个组件而不将它变成一个反应组件。