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

推薦する

VMware Workstation 14 Pro インストール Ubuntu 16.04 チュートリアル

この記事では、VMware Workstation14 ProにUbuntu 16.04をインストー...

MySql で、存在しない場合は挿入し、存在する場合は更新する方法

まとめシナリオによっては、レコードがない場合は挿入し、レコードがある場合は更新するという要件がある場...

Dockerイメージの作成とプロジェクト全体のワンクリックパッケージングとデプロイ

一般的な Dockerfile 命令の紹介命令説明するから新しいイメージが構築される基となるイメージ...

mysqlはエクスポートされたデータのsqlファイルから指定されたテーブルのみをインポートすることを実装します

シナリオ昨日、システムは dbAll.sql.gz という名前の特定のデータベースのすべてのテーブル...

ファイルのダウンロードを実現する javascript Blob オブジェクト

目次例示する1. ブロブオブジェクト2. フロントエンド3. バックエンド要約する例示する最近、ファ...

Vue ページ監視ユーザープレビュー時間機能実装コード

最近のビジネスでは、オンライン トレーニング システムが特定のオンライン プレビュー ページに対する...

ラベルタグの使用時に発生する問題の分析と解決策

最近何かをするときにラベル タグを使用しました。以前はラベル タグをほとんど使用していなかったため、...

CSSアニメーションでポイント獲得効果を実現するアイデアを詳しく解説

最近のプロジェクトでは、ポイントを集める効果を作成する必要があります。 ボスの説明によると、この効果...

Vueモバイル端末が指のスライド効果を実現

この記事の例では、Vueモバイル端末で指のスライド効果を実現するための具体的なコードを紹介します。具...

Linux ターミナルでドメイン IP アドレスを見つけるコマンド (5 つの方法)

このチュートリアルでは、Linux ターミナルでドメイン名またはコンピューター名の IP アドレスを...

MySQLはこのような更新文を決して書きません

目次序文原因現象なぜ?分析要約する序文今日は、非常に典型的な MySQL の「落とし穴」についてお話...

LeetCode の SQL 実装 (182. 重複するメールボックス)

[LeetCode] 182.重複メールPerson という名前のテーブル内のすべての重複メールを...

ファイルの種類を検出するJavaScriptメソッド

目次1. 画像のバイナリデータを表示する方法2. 絵の種類の見分け方3. 画像の種類を検出する方法3...

nginx で同時接続リクエストの数を制限する方法

導入同時接続数を制限するモジュールは http_limit_conn_module です。アドレス:...

モバイルウェブページのサイズ調整を実装する方法

ようやく手元のプロジェクトが終了し、行方不明だった人たちが戻ってきました!プロジェクトを進める過程で...