Vue が Ref を使用してレベル間でコンポーネントを取得する手順

Vue が Ref を使用してレベル間でコンポーネントを取得する手順

VueはRefを使用してレベル間でコンポーネントインスタンスを取得します

例の紹介

開発プロセスでは、レベル間の参照インスタンスの取得が避けられません。ほとんどの場合、コンポーネント自体のparentまたはchildrenを通じて必要なインスタンスを見つけることができます。しかし、階層が不明瞭であったり深すぎたりすると、この方法は必然的に面倒で非効率的になります。

下の図に示すように、組件Eを使用して組件Dのコンポーネント インスタンスを取得します。

ドキュメントディレクトリ構造

コンポーネントはA、B、C、D、E、インデックスの6つあり、上図のコンポーネントの順序でそれぞれのページに挿入されます。

ページのスタイルは次のとおりです。

vue-refをインストールする

vue-ref をダウンロード

npm インストール vue-ref --save

グローバル登録

'vue-ref' から ref をインポートします
Vue.use(参照)

使い方

<!-- vm.dom は DOM ノードになります -->
<p v-ref="c => this.dom = c">こんにちは</p>

<!-- vm.child は子コンポーネントのインスタンスになります -->
<子コンポーネント v-ref="c => this.child = c"></子コンポーネント>

<span v-for="n in 10" :key="n" v-ref="(c, key) => {...}">{{ n }} </span>

ルート コンポーネントのカスタム メソッド [provide と inject を使用]

インデックス ページでは、次の 3 つのメソッドを提供しています。

  • 子コンポーネントのインスタンスを設定する、setChildrenRef
  • コンポーネントインスタンスから取得、getChildrenRef
  • 現在のノードインスタンスを取得する、getRef
提供する() {
  戻る {
   setChildrenRef: (名前、参照) => {
    this[name] = 参照
   },
   getChildrenRef: 名前 => {
    this[名前]を返す
   },
   参照を取得: () => {
    これを返す
   }
  }
 },

各ページを個別に説明する

コンポーネントAページ:

インジェクションメソッドを通じてsetChildrenRefメソッドを取得し、上記の指示を通じてコン​​ポーネントDをキャッシュします。

コンポーネントBページ:

コンポーネントCページ:

コンポーネントDページ:

コンポーネント E ページ:

このページでは、2 つのメソッドを挿入するだけでなく、コンポーネント D の色を切り替えるメソッドも設定して、レベル間でコンポーネント D のインスタンスを実際に取得したかどうかをテストします。

結果

ご覧のとおり、3 つの親インスタンスは同じであり、コンポーネント D のテキスト スタイルがコンポーネント E で正常に変更されています。良い!

上記は、Vue が Ref を使用してレベル間でコンポーネントを取得する手順の詳細です。Vue が Ref を使用してコンポーネントを取得する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Vue マルチ選択リスト コンポーネントの詳細な説明
  • Vue で親子コンポーネントの値を双方向バインドするために v-model を使用するときに発生する問題と解決策
  • トランジションコンポーネントのアニメーション効果を使用した Vue サンプルコード
  • Vueコンポーネントの基本のまとめ
  • Vue の動的コンポーネントと非同期コンポーネントの詳細な理解
  • Vueはマルチタブコンポーネントを実装します
  • Vue3でスイッチ関数コンポーネントのプロセス全体を簡単に実装する
  • Vue3 でダイアログとモーダル コンポーネントをカスタマイズする方法
  • Vue でコンポーネントを強制的に再レン​​ダリングする正しい方法
  • Vueでコンポーネントを動的に作成する2つの方法
  • vue3 のコンポーネントの互換性のない変更の詳細な説明

<<:  Linux の Makefile とは何ですか? どのように機能しますか?

>>:  mysql5.7 ユーザー権限の作成、ユーザーの削除、権限の取り消し

推薦する

Linux/Mac MySQL パスワードを忘れた場合の対処方法

Linux/Mac の MySQL パスワードを忘れた場合はどうすればいいですか?心配しないでくださ...

...

Linuxのtimeコマンドの使い方の詳しい説明

1. コマンドの紹介時間は、コマンドの実行に費やされた時間や関連するシステム リソース、その他の情報...

MySQL5.6.31 winx64.zip インストールと設定のチュートリアル

#1. ダウンロード # #2. ローカルに解凍し、必要な構成のmy*.iniを変更します。 #3....

シンプルなカルーセル効果を実現するネイティブ js

この記事では、シンプルなカルーセル効果を実現するためのjsの具体的なコードを参考までに紹介します。具...

面接官がmysqlのcharとvarcharの違いを尋ねたとき

目次charとvarcharの違いcharとvarcharの違い上記は、MySQL における cha...

DockerコンテナでのMySQLデータのインポート/エクスポートの詳細な説明

序文MySQL データのインポートとエクスポートは mysqldump コマンドで解決できることは誰...

プロジェクトにaxiosをカプセル化する実際のプロセス

目次序文axiosカプセル化の利点パッケージのアイデア設定の優先順位axiosインスタンス構成1. ...

nodejs + koa + typescript の統合と自動再起動に関する問題

目次バージョンノートプロジェクトを作成する依存関係をインストールするコンテンツの記入src/serv...

Ubuntu 18仮想マシンのクローン作成後に同じIPアドレスになる問題の解決方法

序文最近、仮想マシンを使用して Ubuntu 18.04 をインストールしました。クローン作成後、I...

Node.js のモジュール性、npm パッケージ マネージャーの説明

目次モジュール化の基本概念モジュール化とは何かモジュール分解の利点Node.js のモジュール性No...

JavaScriptページングコンポーネントの使い方の詳細な説明

ページネーションコンポーネントはWeb開発でよく使われるコンポーネントです。ページネーション機能を実...

Dockerでイメージ情報を表示する方法

この記事では、Dockerでイメージ情報を表示する方法を学ぶ必要があります。 1. imagesコマ...

Dockerfileを使用して独自のイメージを作成する方法

1. 空のディレクトリを作成する $ cd /home/xm6f/dev $ mkdir myapp...

Dockerfile における VOLUME と docker -v の違い

Dockerfile でのボリュームのマウントと docker -v コマンドによるマウントには明ら...