我开始将我的商店连接到mobx。
我想知道使用observer(['store'],...)
或使用inject('store')(observer(...))
我认为注入的主要区别不是反应性。那么注入观察者的意图究竟是什么呢?
答案 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));
}
...
但是,您可以在inject
和observer
之间添加更多装饰器。在这种情况下,会有一些区别:中间装饰者可以访问注入的道具。如果你不使用inject
,外部装饰者显然无法访问注入的道具。
inject
只是一种注入道具的便捷方式,因为MobX已经具有在上下文中传递内容的机制。在你不得不使用另一个库(例如react-tunnel
)之前,如果你想将道具注入一个组件而不将它变成一个反应组件。