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 バージョンのインストール チュートリアル (画像とテキスト付き)

推薦する

Vueは画像のズームとドラッグをサポートするリッチテキストエディタを統合しています

必要:ビジネス要件によると、写真をアップロードできる必要があり、アップロードされた写真はモバイル端末...

MySQL シャーディングの詳細

1. ビジネスシナリオの紹介MySQLを使用する電子商取引システムがあるとします。大量のデータを保存...

HTMLページの読み込み速度を上げる方法

(1)HTTPリクエストを減らす。 (リソース ファイルをマージし、イメージ スプライトを使用します...

Linux シェル環境での Zabbix API の使用

Linux シェル環境で直接呼び出すことができます。公式 Web サイトによると、Zabbix のデ...

JavaScriptはクリックするとランダムなグラフィックを生成します

この記事では、クリックするとランダムグラフィックの生成を実現するJavaScriptの具体的なコード...

Dockerイメージとコンテナの一般的な操作の詳細な説明

画像アクセラレータ中国の Docker Hub からイメージをプルすることが難しい場合があります。こ...

Node.js のモジュール性、npm パッケージ マネージャーの説明

目次モジュール化の基本概念モジュール化とは何かモジュール分解の利点Node.js のモジュール性No...

純粋な CSS3 を使用して、円の動的な光る特殊効果アニメーションを実装するためのサンプル コード

この記事では、主に、円形のダイナミックな光る特殊効果アニメーションを実現するための純粋な CSS3 ...

JavaScriptはすべての選択と選択解除の操作を実装します

この記事では、JavaScriptで全選択と全選択解除の操作を実装するための具体的なコードを参考まで...

React における ref の一般的な使用法の概要

目次Refsとは何か1. 文字列型参照2. コールバック参照React.createRef() 4....

Dockerコンテナのデータボリュームの詳細な説明

何ですかまず、Docker の概念を見てみましょう。アプリケーションと実行環境をコンテナにパッケージ...

コード分​​析を実現するためのFastDFSとNginxの統合

FastDFSとNginxの統合:トラッカーは、負荷分散と高可用性のために Nginx と組み合わせ...

antd+reactプロジェクトをviteに移行するためのソリューションの詳細な説明

Antd+react+webpackは、多くの場合、Reactテクノロジースタックに基づくフロントエ...

nginx+php-fpm サービスの HTTP ステータス コード 502 の詳細な分析

弊社の Web プロジェクトの 1 つでは、新しい都市の増加によりトラフィックと DB 負荷が増加し...

HTML でフォントの色を設定する方法と、PS を使用して HTML で正確なフォントの色を取得する方法

1. HTMLフォントカラー設定HTML では、フォント タグを使用してフォント コンテンツの色を設...