Vue で親コンポーネントから子コンポーネントにデータを渡すいくつかの方法

Vue で親コンポーネントから子コンポーネントにデータを渡すいくつかの方法

最近、Vue のソースコードを勉強していて、Vue で親コンポーネントと子コンポーネント間でデータを転送するいくつかの方法をまとめました。

1. 小道具とイベント

親コンポーネントは子コンポーネントに props データを渡し、子コンポーネントはイベントをトリガーして親コンポーネントにデータを返します。コードは次のとおりです。

//サブコンポーネント <テンプレート>
    <div @click="changeName('YYY')">{{名前}}</div>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
    props:['name']、//またはprops:{name:{type:String,default:''}}
    方法:{
        //子コンポーネントのプロパティデータを変更することはできません。親コンポーネントが処理できるようにイベントをトリガーする必要があります。changeName(newName){
            this.$emit('changeName',newName)
        }
    }
}
</スクリプト>
 
//親コンポーネント <テンプレート>
    <div>
        <child-comp :name="名前" @changeName="変更名"></child-comp>
    </div>
</テンプレート>
<スクリプト>
    'path' から childComp をインポートします。
    エクスポートデフォルト{
        データ(){
            {name:'XXX'} を返します
        },
        コンポーネント:{
            子コンプ
        },
        方法:{
            名前を変更する(新しい名前){
                this.name = 新しい名前;
            }
        }
    }
</スクリプト>

上記は完全なプロセスです。親コンポーネントは props を通じて子コンポーネントにデータを渡し、子コンポーネントはイベントをトリガーします。親コンポーネントはイベントをリッスンし、それに応じて処理します。

2.参照

ref 属性は、子コンポーネントまたはネイティブ DOM で定義できます。子コンポーネントにある場合は、子コンポーネント インスタンスを指します。ネイティブ DOM にある場合は、ネイティブ DOM 要素を指します (要素の選択に使用できるため、querySelector の問題が解消されます)。

データを渡すという考え方は次のとおりです。親コンポーネントの ref を通じて子コンポーネントのインスタンスを取得し、子コンポーネントのメソッドを呼び出して、関連するデータをパラメーターとして渡します。コードは次のとおりです。

//サブコンポーネント <テンプレート>
    <div>{{親メッセージ}}</div>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
    データ(){
        戻る {
            親メッセージ:''
        }
    },
    方法:{
        getMsg(メッセージ){
            this.parentMsg = メッセージ;
        }
    }
}
</スクリプト>
 
//親コンポーネント <テンプレート>
    <div>
        <child-comp ref="child"></child-comp>
        <button @click="sendMsg">メッセージを送信</button>
    </div>
</テンプレート>
<スクリプト>
    'path' から childComp をインポートします。
    エクスポートデフォルト{
        コンポーネント:{
            子コンプ
        },
        方法:{
            送信メッセージ(){
                this.$refs.child.getMsg('親メッセージ');
            }
        }
    }
</スクリプト>

3. provideとinjectは本番環境での使用は公式には推奨されていません

Provide は提供することを意味します。コンポーネントが provide を通じてデータを提供する場合、その子孫コンポーネントは inject を使用して注入を受け入れ、祖先コンポーネントによって渡されたデータを使用できるようになります。コードは次のとおりです。

//子供
<テンプレート>
    <div>{{アプリ名}}</div>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
    挿入:['appName']
}
</スクリプト>
 
//根 
エクスポートデフォルト{
    データ(){
        戻る {
            アプリ名:'テスト'
        }
    },
    提供:['appName']
}

4.ヴュークス

Vue が公式に推奨するグローバル状態管理プラグイン。詳細はありません。

これで、Vue で親コンポーネントから子コンポーネントにデータを渡すいくつかの方法についての記事は終了です。Vue で親コンポーネントから子コンポーネントにデータを渡す方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • 子コンポーネントを通じて親コンポーネントのプロパティを変更するための Vue のさまざまな実装方法
  • Vueの子コンポーネントが親コンポーネントのメソッドを呼び出す場合の詳細な説明
  • Vue 親コンポーネントが子コンポーネント関数の実装を呼び出す
  • Vue の親コンポーネントのボタンをクリックして子コンポーネントをトリガーするイベントの詳細な説明
  • vueの子コンポーネントと親コンポーネント間で値を渡す例
  • Vue親コンポーネントは子コンポーネントのライフサイクルを監視します
  • Vue親コンポーネントはどのようにして子コンポーネントの変数を取得するのか
  • Vueの子コンポーネントと親コンポーネントの詳細な分析

<<:  Ubuntu 18.04にMySQL 5.7をインストールする

>>:  MySQL 8.0の落とし穴の詳細な説明

推薦する

タグが新しいページを開くかどうかという問題。主要ウェブサイトの開設状況をまとめました

a タグが新しいページを開くかどうか: (1)百度百科事典:ヘッダーが異なる場合は新しいページが開き...

MySQLデータのエクスポートとインポートに関する知識ポイントの簡単な分析

多くの場合、ローカル データベースのデータをエクスポートしたり、他のデータベースからデータをインポー...

ハイパーリンクの幅と高さを直接設定できない問題の解決策

幅と高さを直接使用することはできません。 display:block; または display:in...

DockerでRedisを使用するための詳細な手順

1. はじめにこの記事では、Docker を使用して Redis を探索する方法を説明します。 Do...

Webフロントエンド開発エンジニアが習得すべきコアスキル

Web フロントエンド開発に含まれる内容は、主に W3C 標準の構造、動作、パフォーマンスです。では...

MySQLデータベースのQPSとTPSの意味と計算方法

DB ベンチマーク テストを実行する場合、qps と tps はデータベースのパフォーマンスを測定す...

CSS3+JS による虫眼鏡モードの完璧な実装の詳細説明

約 1 年前、私は「虫眼鏡効果を模倣するいくつかの方法の原理の分析」という記事を書きました。当時、自...

Vue プロジェクトにおけるトランジション コンポーネントの適用の概要

​Vue のトランジションは、アニメーション トランジションをカプセル化するコンポーネントです。一般...

MySQL 5.7.17無料インストール版のインストールと設定

MYSQLバージョン:MySQL Community Server 5.7.17、インストール不要版...

HTML のスクロールバーについて/スクロールバーの削除

1. xhtmlの下のスクロールバーの色元の HTML では、ページ全体のスクロール バーを次のよう...

Windows で MySQL 5.7.17 圧縮バージョンをインストールするときに遭遇する落とし穴

まず、Windows 64 ビット用の最新の MySQL 5.7.17 コミュニティ圧縮バージョンを...

Redis イメージの Docker インストールと設定手順

目次序文環境インストールMySQLコンテナを作成して起動する落とし穴を避けるための注意MySQLコン...

MySQLのマスタースレーブ構成を使用して、読み取りと書き込みの分離を実現し、データベースの負荷を軽減します。

大規模な Web サイトでは、多数の同時アクセスを処理するために、Web サイト上の分散負荷分散以上...

親要素に対する CSS 子要素の固定配置ソリューションの詳細な説明

基本概念絶対配置: 絶対配置に設定された要素ボックスはドキュメント フローから完全に削除され、その包...

Vue でスロットを使用する方法についての簡単な説明

定義と使用方法:コンポーネントのテンプレートでスロットタグの定義を使用します。デフォルトの表示値は、...