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

推薦する

Nginx http ヘルスチェック構成プロセス分析

パッシブチェックパッシブ ヘルス チェックでは、NGINX と NGINX Plus はイベントの発...

MySQL の接続数が多すぎるエラーの原因と解決策

目次概要本日正午、開発およびテスト環境の MySQL サービスで接続数が多すぎるというエラーが報告さ...

仕事の効率を上げるJS略語スキル20選

目次複数の変数を同時に宣言する場合は、1 行に短縮できます。分割代入は複数の変数に同時に値を割り当て...

フィルターを使用して画像に透明な CSS を書く方法

フィルターを使用して画像に透明な CSS を書く方法コードをコピーコードは次のとおりです。 html...

jar パッケージを Docker コンテナに変換する方法

jar パッケージを Docker コンテナに変換する方法1.まずJavaイメージをダウンロードする...

React+Ant Design開発環境をセットアップするための実装手順

基礎1. スキャフォールディングを使用してプロジェクトを作成し、開始する1.1 足場を設置する: n...

Linux は n 日前のログとサンプルコマンドを自動的に削除します

1. ファイル削除コマンド:対応するディレクトリを検索します -mtime + 日数 -name &...

MySQL 8.0.25 のインストールと設定方法のグラフィックチュートリアル

MySQL 8.0.25の最新のダウンロードとインストールのチュートリアルは参考になります。具体的な...

Centos7 から Centos8 へのアップグレードに関するチュートリアル (画像とテキスト付き)

正式な環境でアップグレードする場合は、データと重要な設定をバックアップしてください。アップグレードに...

CentOS 6.4 で rpm を使用して MySQL をオフラインでインストールする

rpmインストールパッケージを使用してmysqlをオフラインでインストールします。参考までに準備:公...

Vue要素ツリーコントロールに点線を追加する詳細な説明

目次1. 成果を達成する2. 実装コード3. その他の実装要約する1. 成果を達成する 2. 実装コ...

JavaScript の組み込みオブジェクト 数学と文字列の詳細な説明

目次数学オブジェクト共通プロパティ一般的な方法Math.random()文字列メソッド長さプロパティ...

Dockerで最もよく使われるイメージコマンドとコンテナコマンドの詳細な説明

この記事では、Docker の使用で最もよく使用されるイメージ コマンドとコンテナ コマンドを一覧表...

Linux コマンドラインのワイルドカードとエスケープ文字の実装

ハードディスクのファイル属性のバッチ表示など、特定の種類のファイルに対してバッチ操作を実行する場合、...

JS を使用して要素がビューポート内にあるかどうかを確認する方法

序文要素がビューポート内にあるかどうかを監視する2つの方法を共有する1. 位置計算Element.g...