Vue で $attrs と $listeners を使用するチュートリアル

Vue で $attrs と $listeners を使用するチュートリアル

導入

$属性

すべての親コンポーネントのプロパティを継承します (props を通じて受け取られないプロパティには、クラス名とスタイルが含まれます)。

継承属性:

非 props 属性がタグの最外層に表示されるかどうか。デフォルト値は true です。これは、すべての親コンポーネント属性 (props 固有のバインディングを除く) が通常の HTML 機能として継承され、子コンポーネントのルート要素に適用されることを意味します。コンポーネントのルート要素に機能を継承させたくない場合は、inheritAttrs: false を設定しますが、クラスは継承されます。

$リスナー

これは、すべてのメソッド バインディングを受け取ることができるオブジェクトであり、このコンポーネントで動作するすべてのリスナーが含まれています。v-on="$listeners" の場合、すべてのイベント リスナーはこのコンポーネントの特定の子要素に送られます。

親コンポーネント内

<テンプレート>
  <div id="アプリ">
    <Son src="https://img01.yzcdn.cn/vant/logo.png"></Son>
  </div>
</テンプレート>
 
<スクリプト>
「./components/son.vue」からSonをインポートします。
エクスポートデフォルト{
  名前:「アプリ」、
  コンポーネント:
    息子、
  },
};
</スクリプト>
 
<スタイル></スタイル>

サブコンポーネント内

<テンプレート>
  <div id="アプリ">
    <Son src="https://img01.yzcdn.cn/vant/logo.png"></Son>
  </div>
</テンプレート>
 
<スクリプト>
「./components/son.vue」からSonをインポートします。
エクスポートデフォルト{
  名前:「アプリ」、
  コンポーネント:
    息子、
  },
};
</スクリプト>
 
<スタイル></スタイル>

inheritAttrsがデフォルトでfalseの場合、属性は最も外側のサブコンポーネントに渡されることがわかります。

inheritAttrsがtrueの場合

属性を受け取るためにpropsを使用する場合、属性は表示されません。

概要: コンポーネント タグで渡された属性がサブコンポーネントによって受信されない場合、それらの属性はサブコンポーネント タグの最外層まで実行されます。

非props属性は$attrs {属性名: 属性値}を通じて受け取ることができます。

<テンプレート>
  <div>
    <img v-bind="$attrs" alt="" />
  </div>
</テンプレート>
 
<スクリプト>
エクスポートデフォルト{
  継承属性: false、
};
</スクリプト>
<スタイルスコープ>
.img {
  幅: 100ピクセル;
  高さ: 100px;
}
</スタイル>

クリック イベントを子コンポーネントにバインドすると、クリック イベントはトリガーされません。.native 修飾子を使用すると、正常にバインドできます。

または、$listeners を使用してすべてのメソッドをバインドします。

サブコンポーネント内

結果

要約する

すべての非props属性は$attrsを通じて受け取ることができます

v-bind="$attrs" を使用すると、props以外の属性を対応するタグにバインドできます。コンポーネントにも使用できます。

コンポーネント上のすべてのメソッドバインディングサブコンポーネントは、$listenersを通じて受信できます。

使用法: v-on="$listeners" を使用して、すべてのメソッドをコンポーネントの対応するタグにバインドします。これはコンポーネントにも使用できます。

これで、Vue で $attrs と $listeners を使用する方法に関するチュートリアルは終了です。Vue $attrs $listeners の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • vue2.xの$attrsと$listenersについて簡単に説明します。
  • vue $attrs と $listeners の使い方と違い
  • Vue で $props、$attrs、$listeners を使用する方法の詳細な説明
  • Vue カプセル化コンポーネント ツール $attrs、$listeners の使用
  • Vue $attrs と inheritAttr を使用してボタンを無効にした効果を実現する
  • Vue コンポーネント通信における $attrs と $listeners の実装原則の分析
  • vue $attrs の使用に関する包括的な分析

<<:  HTMLでのラジオ値の取得、割り当て、登録の詳細な説明

>>:  Docker Composeを使用してDOCleverをインストールする詳細なプロセスを説明します

推薦する

Linuxでmore、less、catコマンドを使用してファイルの内容を表示します

Linux では、cat、more、less の各コマンドを使用してファイルの内容を表示できます。c...

HTMLの基礎知識:ウェブページの基礎知識

HTML は Hypertext Markup Language の略です。これは、実際のプレゼンテ...

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

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

ドラッグ可能なログインボックスを実現するネイティブJS

この記事では、ネイティブ JS で実装されたドラッグ可能なログイン ボックスを紹介します。その効果は...

HTML ページに画像を挿入し、マップ インデックスを追加する方法の例

1. WEBでサポートされている画像形式: GIF: 256色を保存でき、透明色をサポートし、アニメ...

mysql データベースの作成、ユーザーの追加、ユーザー認証の実用的な方法

1. MySQLデータベースを作成する1. データベース構文を作成する --「testdb」という名...

mysql-8.0.19-winx64 をインストールしてログインするための初心者向けチュートリアル (初心者必読)

目次1. インストールパッケージ(64ビット)をダウンロードする2. MySQLデータベースをインス...

Web でよく使われるフォントの紹介 (iOS および Android ブラウザでサポートされているフォント)

年末なので仕事も少なくなっています。私が何もせずにいるのを見ると、上司はきっと不快に思うでしょう。そ...

Linux 環境で crontab コマンドを使用して、スケジュールされた定期的な実行タスクを設定します (PHP 実行コードを含む)

この記事では、Linux 環境で crontab コマンドを使用して、タスクの定期的な実行をスケジュ...

Vue でユーザー権限に基づいてルートを動的に追加する方法

ユーザーの権限に応じて異なるメニュー ページを表示します。知識ポイントルートガード(事前ガードを使用...

CentOS システムの rpm インストールと Nginx の設定

目次CentOS rpm のインストールと Nginx の設定導入rpm パッケージのインストールサ...

ボタンの 4 つのクリック応答方法の概要

ボタンは頻繁に使用されます。ここでは、イベント処理メソッドを整理し、実装方法が多数あることを発見しま...

Linux システムでのスケジュールされたタスクの紹介

目次1. 計画タスクをカスタマイズする2. 時間を同期する3. 練習する4. セキュリティの問題1....

Vue フィルター、ライフサイクル関数、vue-resource の簡単な紹介

1. フィルター例: <!DOCTYPE html> <html lang=&qu...

CSS3 天子グリッドリストのスタイルの書き方

多くのプロジェクトでは、中央に灰色の分割線があり、両側に分割線がないグリッド表示の機能を実装する必要...