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 5.7.27 winx64 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 5.7.27 winx64のインストールと設定方法を参考までに紹介します。...

Zabbixを介してデータベース接続情報といくつかの拡張機能をすばやく取得します

背景アプリケーション システムの数が増え続けると、当初はアラームを発していなかったアクティブ スレッ...

MySQLシリーズのMariaDBサーバーのインストール

目次チュートリアルシリーズ1. yumパッケージマネージャーを使用してMariaDBサーバーをインス...

Vue で Baidu Map を呼び出して経度と緯度を取得する

プロジェクトでは、現在地の緯度経度を取得したり、場所を検索して緯度経度情報を取得したりする必要があり...

Centos 7.4 サーバーの時刻同期設定方法 [NTP サービスに基づく]

この記事では、CentOS 7.4 サーバーで時刻同期を構成する方法について説明します。ご参考までに...

ウェブデザインには目的、アイデア、思考、そして粘り強さがなければならない

<br />はじめに:このアイデアは、数日前に上級ウェブデザインの次の記事を考えていると...

Vue カプセル化コンポーネント ツール $attrs、$listeners の使用

目次序文$属性例: $listeners (公式説明)使用シナリオ要約する序文複数レベルのコンポーネ...

Linux の wget コマンドの詳細な紹介

目次まずwgetをインストールするヘルプマニュアルを見る1. wgetを使用して単一のファイルをダウ...

vue router-view のネストされた表示実装

目次1. ルーティング構成2. Vueページのネスト3. ネストされた関係1. ルーティング構成 定...

Windows 10 64 ビット版に MySQL 5.6.35 をインストールするためのグラフィック チュートリアル

1. MySQL Community Server 5.6.35をダウンロードするダウンロードアドレ...

Mysql クエリの結果セットを JSON データに変換するサンプル コード

Mysql はクエリ結果セットを JSON データに変換します 序文 学生テーブル 学生スコアテーブ...

CSS フレックスレイアウトのリストの最後の行を左揃えにする N 通りの方法 (要約)

張新旭氏の記事を引用して皆さんにシェアしたいと思います。 変更を加えたい場合は、対応する画像によって...

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

MacにMySQLデータベースをインストールし、環境変数を設定する手順を参考までに記録します。具体的...

DockerはRedis5.0をビルドし、データをマウントします

目次1. 永続データの簡単なマウント2. DockerFileでイメージをビルドし、設定ファイルを指...

HTML テーブルの使い方 (Web ページの視覚効果を表示する)

NetEase Blog で HTML を使用する場合、テンプレートに直接コードを追加できることは...