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をインストールする詳細なプロセスを説明します

推薦する

CSS で点線の境界線のスクロール効果を実装するサンプルコード

マウスをある領域の上に置くと、その領域に点線の境界線と線のアニメーションが表示されるというクールな効...

Mybatis での動的 SQL ステートメント分析

この記事は主にMybatisでの動的SQL文の解析について紹介します。この記事のサンプルコードは非常...

CSS カウンターを使用して数字の順序付きリストを美しく表示する方法

Web デザインでは、Web サイトに表示されるデータの構造とコンテンツをユーザーが明確に理解できる...

流れと動的なライン効果を実現する純粋なCSSコード

アイデア:外側のボックスは背景を設定し、内側のボックスは背景の幅と高さを設定し、ボックスを動かすアニ...

Linuxオンラインソフトウェアgccをオンラインでインストールする方法

Linux オンラインインストール関連コマンド: yum install: すべてインストールyum...

データベースSQL文の最適化

最適化する理由:実際のプロジェクトが開始され、データベースが一定期間稼働した後、初期のデータベース設...

MySQL の int、char、varchar のパフォーマンスを比較する

インターネットには、真実のように見える「噂」がたくさんあります。もちろん、悪意のあるものではありませ...

HTMLからReactを実装する方法を教えます

ReactとはReact は、効率的で高速なユーザー インターフェイスを構築するためのシンプルな J...

mysql-connector-java8.0.27 へのアップグレードに関する注意事項

最近、オンライン セキュリティ スキャンにより、MySQL コネクタに脆弱性が見つかりました。確認し...

MySQL はパスワード強度の検証をオフにします

パスワード強度検証について: [root@mysql mysql]# mysql -uroot -p...

タブ効果を実現する js 開発プラグイン

この記事の例では、タブ効果を実現するためのjsプラグインの具体的なコードを参考までに共有しています。...

SQL 実践演習: オンライン モール データベースの製品カテゴリ データ操作

オンラインショッピングモールデータベース - 商品カテゴリデータ操作(I)プロジェクトの説明電子商取...

Docker-compose におけるdepends_on 順序問題を解決する方法についての簡単な説明

コンテナをソートするためにdepends_onを使用しても、コンテナ間の依存関係の問題は完全には解決...

ZabbixはPSK共有キーを使用してサーバーとエージェント間の通信を暗号化します。

Zabbix バージョン 3.0 以降、Zabbix サーバー、Zabbix プロキシ、Zabbi...