2017-12-04 8 views
2

私はこの記事によると、いくつかのプラグインを作成しようとしています:Vueプラグイン内でマウントまたは作成する方法を教えてください。

https://alligator.io/vuejs/creating-custom-plugins/

私はルートVueのインスタンスがマウントまたは作成されたときに何かを実行するために必要なプラグインを持っています。これまでは、私が望むものではないすべてのコンポーネントに何かを注入する方法しか見ることができません。

メインのVueインスタンスがマウントされるときに何かするだけです。プラグインでこれをどうすればできますか?

プラグインのinstallメソッドは実際のcreatedメソッドの前に発生すると思われるため、このトリックを実行していないようです。

答えて

2

複数のルートVueコンポーネントを持つことは可能です。 「ルート要素は」ただnew構文で作成されたコンポーネントなし親コンポーネントですので、次のようにこれを検出することができます

Vue.mixin({ 
    created() { 
    if (!this.$parent) { 
     // This is either the root component or a component 
     // created with `new` and no parent 
    } 
    } 
}) 
+0

このチェックは、現在すべての単一のコンポーネントに対して実行されます。これを行うための効率的な方法は実際にはありませんか? –

+0

私はそう信じていません。このようなフックを提供するためにVueが認識している*単一の*別個の「ルート」コンポーネントはありません。おそらく、ルートコンポーネントが 'created'フックでプラグインを初期化するようにコントロールを反転させるべきでしょう。 –

+0

ところで、1つのウォッチ・プロパティーをすべての単一インスタンスに追加することなくメイン・ルート・インスタンスにどのように追加しますか? –

関連する問題