observer(['store'], Component)
と の間に違いはありませんinject('store')(observer(Component))
。
observer
デコレータは、最初の引数が配列かどうかをチェックします。配列の場合は、inject internalを呼び出します。
function observer(arg1, arg2) {
...
if (Array.isArray(arg1)) {
...
return inject.apply(null, arg1)(observer(arg2));
}
...
inject
ただし、 と の間にさらにデコレータを追加できますobserver
。その場合、違いがあります。中間のデコレーターは、注入された小道具にアクセスできます。を使用しない場合、外側のデコレータは明らかに、注入された小道具にアクセスできませんinject
。
inject
MobX にはコンテキスト内のものを渡すメカニズムがすでにあるため、小道具を挿入するのに便利な方法です。コンポーネントをリアクティブコンポーネントに変換せずにプロパティをコンポーネントに注入したい場合は、別のライブラリ (react-tunnel
たとえば) を使用する必要があります。