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 ユーザー権限の作成、ユーザーの削除、権限の取り消し

推薦する

MySQL データベースの型変換のための CAST 関数と CONVERT 関数の説明

MySQL のCAST()およびCONVERT()関数を使用すると、ある型の値を取得し、別の型の値を...

Alibaba Cloud Server の詳細な展開 (グラフィック チュートリアル)

最近、Web 開発のフロントエンドとバックエンドの技術を学んだので、その後の管理を容易にするためにプ...

CentOS に PHP5 をインストール、PHP をアンインストール、PHP7 をインストールするチュートリアル

まず、PHP5をインストールするのはとても簡単ですyum install php PHP5 を使用し...

シンプルなドラッグ効果を実現するJavaScript

この記事では、簡単なドラッグ効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...

Linux でファイアウォールがオフになっているかどうかを確認する方法

1. サービス方法ファイアウォールのステータスを確認します。 [root@centos6 ~]# サ...

Webpack3+React16コード分割の実装

プロジェクトの背景最近、webpackのバージョンが古いプロジェクトがあります。 リーダー層では今の...

ウェブサイトを高速化する

パフォーマンスは本当に重要ですか?パフォーマンスは重要であり、誰もがそれを知っています。なぜ私たちは...

MySQL ストアド プロシージャの概念、原則、一般的な使用法の詳細な説明

この記事では、例を使用して、MySQL ストアド プロシージャの概念、原則、および一般的な使用法につ...

nginx httpモジュールのデータ保存構造の概要

このセクションから、http モジュールの実装原理について説明します。http モジュールで非常に重...

Google の新しい UI から学べること (画像とテキスト)

2011 年に最も顕著なウェブサイトの変更は、一連の製品に新しいユーザー インターフェースを導入した...

innodb_flush_method 値メソッド (例の説明)

innodb_flush_methodのいくつかの典型的な値 fsync: InnoDB は fs...

MySQLデータベースインデックスの詳細な説明

目次1. MySQLインデックスの紹介2. MySQLの5種類のインデックスの詳しい説明1. 総合索...

全文検索とキーワードスコアリング方式のMySQL実装例

1. はじめに今日、同僚から、MySQL を使用して ElasticSearch に似た全文検索機能...

LinuxのCentos7でmysql5.7.29を構築する詳細なプロセス

1. MySQLをダウンロードする1.1 ダウンロードアドレスhttps://downloads.m...

JavaScript でロジック判定コードを最適化する方法

序文日常生活で使用する論理的判断文には、if...else...、switch...case...、...