背景ここで、状況について説明しましょう。親コンポーネントは孫コンポーネントとどのように通信するのでしょうか。解決策はいくつあるでしょうか。
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 コード
1. VMware 15.5で新しい仮想マシンを作成する1. VMware を開き、ホームページで「...
InnoDB REDO ログ ファイルのサイズと数を調整する場合は、次の手順に従います。 1. My...
1. ブリッジ: デフォルトでは VMnet0 が使用されます1. 原則:ブリッジは、それぞれ 2...
この記事では、Windows 8 での MySQL5.6 のインストールと設定のチュートリアルを記録...
目次utf8mb4 の紹介UTF8 バイト数超過エラーutf8mb4 サポートデフォルトの文字エンコ...
MariaDBをアンインストールするCentOS7 ではデフォルトで MySQL の代わりに Mar...
1. 同じタイプの空の要素を追加し、要素の CSS 属性 clear:both; を設定します。 ...
1. 設置前によく掃除する rpm -pa | grep mysql または rpm -qa | g...
目次序文1. 文字列の長さを取得する2. 文字列の指定された位置の値を取得する(1) charAt(...
html-webpack-pluginプラグインを使用してページを開始すると、htmlページをメモリ...
1. レンダリング2. 操作手順1. テンセントマップキーを申請する - 住所2. ミニプログラムの...
テキストシャドウテキストシャドウ: 水平オフセット 垂直オフセット ぼかし色互換性: IE10+ &...
序文多くの友人は Mac コンピューターを持っていないと言っていますが、Windows 開発は実際に...
目次概要コードの実装パラメータ定義成し遂げる責任連鎖パターンの実装改善概要責任チェーン パターンは、...
目次1. JDKをインストールする手動インストール2. トムキャット1. JDKをインストールする注...