Vue3 ベースのスクリプト設定構文 $refs の使用

Vue3 ベースのスクリプト設定構文 $refs の使用

1. Vue2 構文

vue2 構文でコンポーネントに ref 属性を設定すると、コード内の this.$refs.ref 値を通じて対応するサブコンポーネントにアクセスできるようになります。

ref 値を設定するコンポーネント:

<base-input ref="ユーザー名入力"></base-input>


js コードでは、次のコードを通じてこのコンポーネントにアクセスできます。

this.$refs.usernameInput


次のメソッドを内部で呼び出すことができます:

// ベース入力コンポーネントにメソッド foo があると仮定します
 
this.$refs.usernameInput.foo();


詳しい使い方については、下部に記載している参考記事をご覧ください。

2. Vue3の使用

インターネットでいくつかの記事を見つけましたが、試してみたところどれもうまくいきませんでした。しかし、これらの記事からいくつかの重要な情報を得て、最終的に次の手順を整理しました。

1. コンポーネントのref値を設定する

これは vue2 に似ており、親コンポーネントが子コンポーネントを呼び出すときに ref 値を設定します。

<ChildVue ref="childRef" />

2. コンポーネントインスタンスの取得

設定が完了すると、ref メソッドを通じて vue3 を取得できるようになります。

定数childRef = ref();


ここでの変数名は上記のrefと一致している必要があります。 childRefを直接印刷する方法は、次のようになります。

未定義

ページ コンポーネントはまだマウントされていないため、正常に使用できるようにするにはマウントする必要があります。

マウント時(() => {
    console.log(childRef.value); // プロキシ {…}
});


3. サブコンポーネントにパブリック変数を設定する

上記の手順 2 でサブコンポーネント インスタンスを取得した後は、 script setupを使用するコンポーネントはデフォルトで閉じられているため、サブコンポーネント内のメソッドは使用できません。これをパブリックにする必要がある場合は、 defineExposeコンパイラ マクロを使用する必要があります。

// サブコンポーネントコード const foo = () => {
  コンソールにログ出力します。
}
定義公開({
  フー
});


親コンポーネントを呼び出します:

// 子コンポーネントメソッドを呼び出す childRef.value.foo(); // foo


このようにして、サブコンポーネントのメソッドを呼び出すことができます。

childRef.value を見ると、public foo メソッドが確認できます。

Vue3 親コンポーネントが子コンポーネントメソッドを呼び出す

完全な参照コード:

親コンポーネント:

<テンプレート>
    <ChildVue ref="childRef" />
</テンプレート>
 
<スクリプト設定 lang="ts">
'@vue/reactivity' から { ref } をインポートします。
'@vue/runtime-core' から onMounted をインポートします。
'./Child.vue' から ChildVue をインポートします。
 
定数childRef = ref();
console.log(childRef.value); // 未定義
 
マウント時(() => {
    console.log(childRef.value); // プロキシ {…}
    // 子コンポーネントメソッドを呼び出す childRef.value.foo(); // foo
});
</スクリプト>
 
<スタイル>
</スタイル>


サブコンポーネント:

<template>子デモ</template>
 
<スクリプト設定 lang="ts">
定数foo = () => {
  コンソールにログ出力します。
}
定義公開({
  フー
});
</スクリプト>
 
<スタイル>
</スタイル>

Vue3 のスクリプト設定構文に基づく $refs の使用に関するこの記事はこれで終わりです。Vue3 での $refs の使用に関する詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue3 アップデートのセットアップ構文シュガー例の詳細な説明
  • Vue3 - セットアップスクリプトの使用経験の共有
  • フロントエンド vue3 セットアップチュートリアル
  • vue3 でのセットアップ スクリプトの適用例
  • 強くお勧めします! Vue 3.2 でシンタックスシュガーを設定する
  • setup+ref+reactive は vue3 の応答性を実装します
  • Vue3 setup() の高度な使用例の詳細な説明
  • vue3のセットアップ関数の使用について

<<:  HTML 文法百科事典_HTML 言語文法百科事典 (必読)

>>:  Dockerでspringcloudプロジェクトをデプロイする方法

推薦する

js 学習ノート: class、super、extends キーワード

目次序文1. es6の前にオブジェクトを作成する2. es6 後のクラス宣言3. クラスの継承4. ...

基本的な HTML ディレクトリの問題 (相対パスと絶対パスの違い)

相対パス - ファイルを参照する Web ページの場所に基づいて確立されたディレクトリ パス。そのた...

HTML における DOM 要素のスクロールバースクロール制御の詳細な説明

dom要素に新しい子要素を追加し、新しく追加された新しい要素がコンテナーのスコープを超えた場合は、次...

HTMLでは、div内のコンテンツが次のサイズを超えたときに自動的にスクロールバーが表示されるように設定します。

HTML ページでは、div 内のコンテンツが制限を超えた後に自動的にスクロール バーを表示する必要...

HTML テーブル マークアップ チュートリアル (28): セルの境界線の色属性 BORDERCOLOR

テーブルを美しくするために、セルごとに異なる境界線の色を設定できます。基本的な構文<TD 境界...

純粋な HTML+CSS でオリンピック リングを実装するためのサンプル コード

レンダリング コード - 青と黄色のリングを例に挙げます <div class="コ...

HTML+CSS をベースにした素敵なフリップログインおよび登録インターフェースを作成します

素敵なフリップログインと登録インターフェースを作成する序文最近、ネットワーク ディスクを構築しようと...

Vue マウスホイールスクロール切り替えルーティング効果を実装する方法

ルート ルーティング コンポーネント (アプリの下のルート ルーティング コンポーネント。子コンポー...

WHMCS V7.4.2 グラフィカル インストール チュートリアル

1. はじめにWHMCS は、ユーザー管理、請求書の支払い、ヘルプ サービスなど、オンライン ビジネ...

WeChatミニプログラムでの仮想リストの実装例

目次序文分析する初期レンダリング方法初期最適化さらなる最適化方法2序文ほとんどのミニプログラムには、...

HTML タグのメタ概要、HTML5 のヘッド メタ属性の概要

序文metaはhtml言語のhead領域にある補助タグです。おそらく、これらのコードは不要だと思うで...

標準のMySQL (x64) Windowsバージョンのインストール手順の詳細な説明

MySQL x64 はインストーラーを提供していません、インストーラーを提供していません、インストー...

Docker インストール rocketMQ チュートリアル (最も詳細)

RocketMQ は、Alibaba が設計した分散型のキューベースのメッセージング ミドルウェア...

1つの記事でJSONPの原理と応用を理解する

目次JSONPとはJSONP 原則JSONP実装1. Ajaxでクロスドメインリクエストが行われると...