2016-07-26 5 views

答えて

5

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)を使用する必要があります。

関連する問題