背景ここで、状況について説明しましょう。親コンポーネントは孫コンポーネントとどのように通信するのでしょうか。解決策はいくつあるでしょうか。
1. 文書の説明(1) $props : 現在のコンポーネントが受け取ったpropsオブジェクト。 Vue インスタンスは、その props オブジェクトのプロパティへのアクセスをプロキシします。 (2) $attrs :親スコープでプロパティとして認識(および取得)されない属性バインディング(クラスとスタイルを除く)が含まれます。 (3) $listeners : 親スコープ内のv-onイベントリスナーが含まれます(.native修飾子なし)。 v-on="listeners" を通じて内部コンポーネントに渡すことができます。 2. 特定の用途1. 親コンポーネント <テンプレート> <div> <div>親コンポーネント</div> <子供 :foo="foo" :zoo="動物園" @handle="handleFun" > </子> </div> </テンプレート> <スクリプト> './Child.vue' から Child をインポートします。 エクスポートデフォルト{ コンポーネント: { 子 }, データ() { 戻る { foo: 'foo', 動物園: 「動物園」 } }, メソッド: { // イベントを渡す handleFun(value) { this.zoo = 値 console.log('孫コンポーネントでクリックイベントが発生したので受信しました') } } } </スクリプト> 2. 子コンポーネント(Child.vue) 中間層は、親コンポーネントと孫コンポーネント間の伝送仲介者として、孫コンポーネントがデータを受信できるように、息子コンポーネント内の孫コンポーネントに
<テンプレート> <div クラス = '子ビュー'> <p>子コンポーネント - {{$props.foo}} は {{foo} と同じ内容を持ちます。}</p> <GrandChild v-bind="$attrs" v-on="$listeners"></GrandChild> </div> </テンプレート> <スクリプト> './GrandChild.vue' から GrandChild をインポートします。 エクスポートデフォルト{ // 親コンポーネントのコンテンツをすべて継承します。inheritAttrs: true, コンポーネント: { GrandChild }, プロパティ: ['foo'], データ() { 戻る { } } } </スクリプト> 3. 孫コンポーネント (GrandChild.vue) 孫コンポーネントでは、親コンポーネントから渡されたデータを受け取るためにpropsを使用する必要があります。 <テンプレート> <div class='孫のビュー'> <p>孫コンポーネント</p> <p>孫コンポーネントに渡されたデータ: {{zoo}}</p> <button @click="testFun">クリックしてイベントをトリガーします</button> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ // 親コンポーネントのコンテンツをすべて継承せず、コンポーネントのルート要素 DOM に属性を表示しません。inheritAttrs: false, // このコンポーネントでは、親コンポーネントから渡されたデータを受け取る必要があります。props のパラメータ名は変更できないことに注意してください。親コンポーネントから渡された props と同じである必要があります: ['zoo'], メソッド: { テストファン(){ this.$emit('handle', '123') } } } </スクリプト> 結論上記のコードから、 attrs 属性とinheritAttrs属性を使用すると、簡潔なコードを使用してコンポーネント Aのデータをコンポーネント Cに渡すことができることがわかります。このシナリオの使用範囲は非常に広範囲です。 listenersを通じて、コンポーネント b に v-on="$listeners" をバインドし、コンポーネント a で、コンポーネント c によってトリガーされたイベントをリッスンします。コンポーネント c によって送信されたデータはコンポーネント a に渡すことができます。 Vue における $props、$attrs、$listeners の詳細な使用法に関するこの記事はこれで終わりです。Vue の $props、$attrs、$listeners に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MIME TYPEとは?MIME-Typesタイプコレクション
>>: 透明な入力ボックスにアイコンを追加する HTML コード
コードをコピーコードは次のとおりです。 <html> <ヘッド> <ス...
実施原則メイングラフィックは、背景と前景の 2 つの要素で構成されています。次のサンプルコードでは、...
目次序文1. ローカルポート転送2. リモートポート転送3. 動的ポート転送(SOCKS5) 4. ...
目次キューマイクロタスク非同期/待機メッセージチャネルやっと付録ここ二日間、「タイムリーな setT...
MySQL の内部関数instrを使用すると、従来の like クエリ メソッドを置き換えることがで...
最近、電子アーカイブに取り組んでおり、バックエンドではファイルの Huawei Cloud OSS ...
MySQL 5.7.18 でパスワードを変更する方法: 1. まずMySQLサーバーをシャットダウン...
1. Nginxの簡単な紹介Nginx は、無料のオープンソースの高性能 HTTP サーバーおよびリ...
この記事では、参考までに、テキストループスクロールを実現するアプレットの具体的なコードを例を挙げて紹...
これは純粋に CSS で実装された大きなドロップダウン メニューです。この大きなメニューは、js コ...
1. ビューポートの概要モバイル ブラウザは通常、画面よりも幅の広い仮想ウィンドウにページをレンダリ...
この記事では、シンプルなカルーセル効果を実現するためのjsの具体的なコードを参考までに紹介します。具...
1. 基本ライン 2. 特殊効果(効果は独立しておらず、互いに組み合わせることができます) 1. 両...
100 以内の自然数をランダムに選択し、プレイヤーに 10 ラウンド以内にその数を推測させる数字推...
序文この記事は主にMySQLの主キー0と主キー自己排除制約の関係を紹介し、皆さんの参考と学習のために...