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

推薦する

C# は MySQL コマンドラインのバックアップとリカバリを実装します

MySQL データベースをバックアップするためのツールは多数あります。過去 2 日間で、C# を使用...

VUEウォッチリスナーの基本的な使い方の詳しい説明

目次1. 次のコードはwatchの簡単な使用法です2. 即時監視3. ハンドラメソッド4. 深い属性...

Linux における「/」と「~」の違いの詳細な説明

「/」はルートディレクトリ、「~」はホームディレクトリです。 Linux ストレージはツリー状にマウ...

js 日付と時刻のフォーマット方法の例

js 日付時刻形式日付と時刻を指定された形式に変換します。例: YYYY-mm-dd HH:MM は...

Web フォントの読み込みを最適化する方法をご存知ですか?

タイトル通りです!一般的に使用される font-family はブラウザの組み込みフォントを読み込み...

クリック範囲を拡大する入力チェックボックスを実装する方法

XML/HTML コードコンテンツをクリップボードにコピー< div style = &quo...

Vue のスロットスコープの詳細な理解(初心者向け)

Baidu には slot-scope に関する記事が既にたくさんありますが、以前よく学習しておら...

CentOS ベースの OpenStack 環境の展開に関する詳細なチュートリアル (OpenStack のインストール)

エフェクト表示: 環境準備コントローラーノード: 6GB 4時間60GB/30GB/30GB計算ノー...

MySQLインデックスを正しく作成する方法

インデックス作成は大学図書館の書誌インデックスの構築に似ており、データ検索の効率を向上させ、データベ...

Apple Watchのインタラクションデザインにおける4つの全く異なる体験が明らかに

今日も Watch アプリのデザインに関する話です。私はケーススタディが大好きなので、同じトピックを...

この記事では、CSSの2列レイアウトと3列レイアウトの具体的な使い方をまとめます。

序文大規模なフロントエンドの開発に伴い、UI フレームワークが次々と登場し、フロントエンド開発におけ...

Apache Flink の任意の Jar パッケージのアップロードにより、リモート コード実行の脆弱性が再発する問題が発生する (脆弱性警告)

脆弱性の説明Apache Flink は、分散ストリームおよびバッチ データ処理用のオープン ソース...

Linux で JDK 環境を構成する方法

1. 公式ウェブサイトにアクセスして、jdk-8u162-linux-x64.tar.gzなどのLi...

MySQL パフォーマンス最適化のヒント

MySQL パフォーマンスの最適化MySQL はインターネット企業で広く使用されており、MySQL ...

外部キー制約を持つテーブルデータを削除する MySQL メソッドの紹介

MySQLでテーブルやデータを削除する場合、 [エラー] 1451 - 親行を削除または更新できませ...