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

dag*_*oin 2 javascript reactjs mobx

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

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

Ali*_*lik 6

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

observer装饰器检查第一个参数是否为数组.如果它是一个数组,那么它会在内部调用inject.

function observer(arg1, arg2) {
...
 if (Array.isArray(arg1)) {
   ...
   return inject.apply(null, arg1)(observer(arg2));
  }
...
Run Code Online (Sandbox Code Playgroud)

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

inject只是一种注入道具的便捷方式,因为MobX已经具有在上下文中传递内容的机制.react-tunnel如果您想要将道具注入组件而不将其转换为反应组件,则必须使用其他库(例如)之前.