背景ここで、状況について説明しましょう。親コンポーネントは孫コンポーネントとどのように通信するのでしょうか。解決策はいくつあるでしょうか。
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 コード
現象システムは Linux システムカーネルを正常にコンパイルできましたが、SVN をインストールし...
コンテナと呼ばれるものは、実際には親イメージに基づいて読み取りおよび書き込み可能なファイル階層を作成...
問題: MySQLテーブル内の自動増分IDのオーバーフローによりビジネスブロックが発生した背景: t...
主な違い: 1. タイプSQL データベースは主にリレーショナル データベース (RDBMS) とし...
目次Linux ドライバーの共通機能 (copy_from_user open read write...
Google の Flutter の目標は、どのプラットフォームを使用していても、ネイティブの速度...
序文今日、MySQL をインストールしたところ、データベース ストレージがデフォルトで C ドライブ...
現在、Linux を使用するほとんどの人は、クラウド サーバーを使用するか、Windows 上に仮想...
序文CentOS に MySQL をインストールして設定する手順は次のとおりです。文章yumソースか...
この記事では、3Dカルーセル効果をjsで実装するための具体的なコードを参考までに共有します。具体的な...
目次1. 実施の背景2. 実装のアイデア3. 実施プロセス1. 実施の背景先週、ユーザーがタスクを完...
1. ダウンロード公式サイトからmysql-5.7.19-linux-glibc2.12-x86_6...
アイデアそれは実はとても簡単ですシェル スクリプトを記述して、mysql の mysqldump を...
序文MySQL データベースのデフォルトのデータベース ファイルは /var/lib/mysql に...
登録するフロントエンドは、vue の axios を使用して値を渡し、取得したアカウントとパスワード...