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プロジェクトをデプロイする方法

推薦する

美しい FLASH ウェブサイト デザイン例 50 選

Flashにより、デザイナーや開発者はブラウザ上でリッチなコンテンツを提供し、動き、インタラクティブ...

Centos7でポートを開く方法

CentOS7 のデフォルトのファイアウォールは iptables ではなく、firewalle で...

MySQLチュートリアルではストアドプロシージャを徹底的に理解します

目次1. ストアドプロシージャに関連する概念2. ストアドプロシージャの使用1) ストアドプロシージ...

Pythonの関数知識についての簡単な説明

目次関数パラメータの2つの主要なカテゴリ位置パラメータ可変長パラメータ名前空間要約する関数パラメータ...

Linuxで中断されたシステムを呼び出す方法

序文低速システム コールとは、決して戻らない可能性があり、プロセスを永久にブロックするシステム コー...

ウォーターフォールレイアウト+ダイナミックレンダリングの実装

目次典型的なウォーターフォールウェブサイトウォーターフォールフローレイアウトの原則一般的な考え方具体...

nginx 503 サービスが一時的に利用できない問題を解決する方法

最近、ウェブサイトを更新すると、503 Service Temporarily Unavailabl...

Vue 父子価値移転、兄弟価値移転、子父価値移転の詳細な説明

目次1. 親コンポーネントが子コンポーネントに値を渡す1. 親コンポーネント.vue 2. サブコン...

Dockerコンテナとホスト間のデータ相互作用の概要

序文実稼働環境で Docker を使用する場合、多くの場合、データを複数のコンテナ間で永続化または共...

mysqlは時間を自動的に追加し、時間を自動的に追加および更新する操作を実装します

時間フィールドは、データベースの使用時によく使用されます。よく使われるのは作成時間と更新時間です。し...

CentOS 起動時にカーネルモジュール overlayfs 操作を自動的にロードする

CentOS でカーネル モジュールを自動的にロードするには、/etc/sysconfig/modu...

JSで画面録画機能を作成する

OBS studioかっこいいですが、 JavaScriptもっとかっこいいです。では、 JavaS...

JavaScriptは入力ボックスコンポーネントを実装します

この記事では、入力ボックスコンポーネントを手動で実装するための具体的なコードを参考までに紹介します。...

CSS3は小さな矢印のさまざまなグラフィック効果を実現します

CSS を使ってさまざまなグラフィックを実現できるのは素晴らしいことです。画像を切り取る必要はなく、...