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

What is the main difference between Mobx.inject an Mobx.observer when connecting stores?

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

之间的区别

我认为注入不是反应性的主要区别。那么 inject over observer 的意图到底是什么?

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