Vue3 での provide と injection の使用

Vue3 での provide と injection の使用

1. provideとinjectの説明

Provide と Inject により、ネストされたコンポーネント間でデータを転送できます。
両方の機能はセットアップ機能で使用されます。
親コンポーネントは provide を使用してデータを下位に渡します。
子コンポーネントは inject を使用して、親コンポーネントから渡されたデータを取得します。
以下の点に注意してください。
1==>provideはデータを下方向にのみ渡すことができます
2==>provideとinjectを使用する場合は、vueからインポートする必要があります

2. provideとinjectの使用

2つのコンポーネントサブコンポーネントErZi.vueを作成します。
孫コンポーネント SunZI.vue
親コンポーネントから子コンポーネントにデータを渡します。
すると、息子と孫の両方のコンポーネントがそれを受け取ります。
そしてそれをビューに表示する

3. 親コンポーネント

<テンプレート>
  <erzi-com></erzi-com>
</テンプレート>
<script lang="ts">
「../components/ErZi.vue」からErZiをインポートします。
「vue」から{provide, ref}をインポートします
エクスポートデフォルト{
  名前:"概要",
  コンポーネント:{
    'erzi-com':エルジ
  },
  設定(){
    giveSunziData=ref({
       100、
       高さ:50,
       bg:'ピンク'
    })
    // 最初のパラメータは共有データの名前です (giveSunzi)
    // 2 番目のパラメータは共有データ (giveSunziData) です
    提供する('Sunzi'、SunziDataを提供する)
  }
}
</スクリプト>

親コンポーネントは子コンポーネントにオブジェクトを渡す
provideはsetUpの組み合わせAPIで使用されます
provide の使用方法:
提供 ('共有データ名'、共有値)
共有値は文字列、数値、オブジェクト、配列になります

サブコンポーネントが受信中の場合。
let xxx=inject('共有データ名');

4. 息子コンポーネント

<テンプレート>
    <div>
      <h2>息子のコンポーネント</h2>
      <div>値を取得: {{getFaytherData}}</div>
    </div>
    <hr/>
    <sun-con></sun-con>
</テンプレート>
<script lang="ts">
'vue' から defineComponent をインポートし、 inject します。
「./SunZI.vue」からSunZIをインポートします。
エクスポートデフォルトdefineComponent({
  名前: 'ErZi'、
   コンポーネント:{
     'sun-con':SunZI
   },
    設定(){
      getFaytherData = inject('giveSunzi'); を取得します。
      戻り値: getFaytherData
    }
});
</スクリプト>

5. 孫コンポーネント

<テンプレート>
    <div>
         <h2>孫コンポーネント</h2>
         <div>取得された値は {{getYeYeData} です。}</div>
    </div>
</テンプレート>
<script lang="ts">
'vue' から {defineComponent,inject} をインポートします。
エクスポートデフォルトdefineComponent({
   設定(){
     getYeYeData=inject('giveSunzi'); を取得します。
    戻り値: getYeYeData
   }
});
</スクリプト>

6. レンダリング

7. 親コンポーネントは複数のプロバイダーを渡すことができますか?

場合によっては、親コンポーネントが複数のプロバイダーを渡す必要がある場合があります。
データを分離しておきたいからです。
このとき、複数のrovidesを渡す必要があります。
練習すれば、親コンポーネントは複数のルーターを通過できるようになります。 ! ! !
これには問題はありません。

ただし、個人的にはこのアプローチはお勧めしません。データを渡すときに、一度に複数のデータを組み立てることができます。
組み立て後、転送

8. rovideとinjectの参照シナリオ

親コンポーネントが子コンポーネントに配布するデータが大量にある場合、
provide と inject を使用できます。

これで、vue3 での provide と inject の使用に関するこの記事は終了です。vue provide と inject の使用に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue3 における Provide/Inject の実装原則の共有
  • Vue3 における provide と inject の使用法と原則
  • Vue3のprovideとinjectの使用に関するヒントを共有する

<<:  Tomcatディレクトリ構造の詳細な説明

>>:  MySQL 8.x msi バージョンのインストール チュートリアル (画像とテキスト付き)

推薦する

Windows CVE-2019-0708 リモート デスクトップ コード実行脆弱性の再現問題

1. 脆弱性の説明マイクロソフトは2019年5月15日、CVE番号CVE-2019-0708のWin...

Linux の Docker コンテナで bash を終了する 2 つの方法

bash を終了する場合は、次の 2 つのオプションがあります。最初のもの: Ctrl + d を押...

Vue3+Element+Tsは、フォームの基本的な検索リセットやその他の機能を実装します

Vue2 の記述スタイルから Vue3 の形式に切り替えると、記述スタイルとコード構造にいくつかの変...

Docker イメージのデフォルトの保存場所を変更する方法 (ソリューション)

システムの初期のパーティション分割により、オペレーティング システム内の対応する / パーティション...

Windows Server 2016 標準キー アクティベーション キー シリアル番号

Windows Server 2016 アクティベーション キーを皆さんと共有したいと思います。wi...

Nginx の場所と proxy_pass パスの設定の問題の概要

目次1. Nginxロケーションの基本設定1.1 Nginx 設定ファイル1.2 Pythonスクリ...

Linux システム ディスクのフォーマットとスワップ パーティションの手動追加

Windows: NTFS、FATをサポートLinux は次のファイル形式をサポートしています: C...

適応型ウェブページを設計および作成する方法

3G の普及により、携帯電話を使ってインターネットにアクセスする人が増えています。モバイル デバイス...

this.parentNode.parentNode (親ノードの親ノード) はどういう意味ですか?

親ノードの親ノード、例えば、このような段落がありますHTML:コードをコピーコードは次のとおりです。...

require loaderの実装原理の深い理解

序文Node は新しいプログラミング言語ではなく、JavaScript のランタイムに過ぎないとよく...

GaussDB for MySQL パフォーマンス最適化の詳細な説明

目次背景インスピレーションは人生から生まれる速達配送の最適化原則GaussDB の最適化 (MySQ...

SSM VUE Axios の詳細な説明

目次SQL ログを表示するにはどうすればいいですか? ? SpringMVC でのパラメータ渡しの説...

Vue のミックスインの使用方法の詳細な説明

目次序文1. Mixin とは何ですか? 2. Mixin はいつ使用すればよいですか? 3. Mi...

MacにMySQLをインストールするときに忘れたパスワードを変更する方法

1. MacにMySQLデータベースをインストールする1. MySQLデータベースをダウンロードする...

vuexプロジェクトにおけるログインステータス管理の実践プロセス

目次道具:ログインシナリオ:練習する:シナリオ1: 思考と実践シナリオ2: 思考と実践要約する道具:...