ref は vue のインスタンスを取得できますか?インスタンスにアクセスするためのいくつかの方法

PHPz
リリース: 2023-04-11 15:49:22
オリジナル
541 人が閲覧しました

Vue では、コンポーネント インスタンスは Vue インスタンスによって作成されます。コンポーネントでは、 ref を使用して DOM 要素またはコンポーネント インスタンスへの参照を取得できます。では、ref を使用して Vue インスタンスを取得できますか?

簡単に言えば答えはノーです。 Vue インスタンスは DOM 要素やコンポーネントではなく、JavaScript オブジェクトであるためです。 Vue インスタンスは最終的にページ上に DOM 要素としてレンダリングされますが、コンポーネント内で ref を使用すると、DOM 要素またはコンポーネント インスタンスへの参照のみを取得でき、Vue インスタンスを直接取得することはできません。

それでは、Vue インスタンスにアクセスする必要がある場合はどうすればよいでしょうか?一般的な方法をいくつか示します。

  1. Vue.mixin を使用してグローバルにミックスする

Vue.mixin を使用してグローバルにミックスし、オブジェクトをすべての Vue コンポーネントにミックスできます。 mixin オブジェクトでは、作成された (または他のライフサイクル フック関数) を定義でき、これを通じて Vue インスタンスにアクセスできます。サンプルコードは以下のとおりです。

// mixin.js 
export default { 
  created() { 
    console.log('Vue instance:', this.$root); 
  } 
} 
// main.js 
import Vue from 'vue'; 
import App from './App.vue'; 
import mixin from './mixin'; 

Vue.mixin(mixin); 

new Vue({ 
  render: h => h(App), 
}).$mount('#app');
ログイン後にコピー

作成したフック関数は、コンポーネント作成時にVueインスタンスを出力するためにmixin.js内に定義されています。 main.js では、ミックスインをグローバルに適用します。

  1. $root を使用して Vue インスタンスにアクセスする

前述したように、Vue インスタンスには this.$root を通じてアクセスできます。コンポーネントでは、this.$root を通じて Vue インスタンスを取得することもできます。コンポーネント内で this.$root を使用して Vue インスタンスにアクセスする場合は、Vue インスタンスを作成した後に使用しないと、unknown が返されるので注意が必要です。サンプル コードは次のとおりです。

<template> 
  <div> 
    <p>Using $root to access Vue instance:</p> 
    <button @click="logVueInstance">Log Vue Instance</button> 
  </div> 
</template> 

<script> 
  export default { 
    methods: { 
      logVueInstance() { 
        console.log('Vue instance:', this.$root); 
      } 
    } 
  } 
</script>
ログイン後にコピー

は、ボタンがクリックされたときに Vue インスタンスを出力するメソッドをコンポーネント内に定義します。

  1. $parent を使用して Vue インスタンスにアクセスする

$root を使用することに加えて、$parent を通じて親コンポーネントの Vue インスタンスにアクセスすることもできます。親コンポーネントはルート コンポーネントであり、Vue インスタンス全体です。 $parent アクセスを使用する前に親コンポーネントを作成しておく必要があることに注意することも重要です。サンプル コードは次のとおりです:

<template> 
  <div> 
    <p>Using $parent to access Vue instance:</p> 
    <button @click="logVueInstance">Log Vue Instance</button> 
  </div> 
</template> 

<script> 
  export default { 
    methods: { 
      logVueInstance() { 
        console.log('Vue instance:', this.$parent.$root); 
      } 
    } 
  } 
</script>
ログイン後にコピー

はコンポーネント内のメソッドを定義しており、ボタンをクリックすると、$parent を通じて親コンポーネントの Vue インスタンスにアクセスし、出力します。

要約すると、ref を通じて Vue インスタンスに直接アクセスすることはできませんが、Vue.mixin、$root、$parent およびその他のメソッドを使用してコンポーネント内の Vue インスタンスにアクセスできます。

以上がref は vue のインスタンスを取得できますか?インスタンスにアクセスするためのいくつかの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!