Vue で Provide/Inject を使用して、祖先と子孫の複数のレイヤーにデータを渡す方法
Vue は、効率的なデータ転送方法であるプロバイド/インジェクトを提供します。これにより、複数のレイヤーにわたる祖先と子孫の間でデータを転送し、面倒な props の転送を回避できます。この記事では、Vue で Provide/Inject を使用して、祖先と子孫の複数のレイヤーにわたるデータ転送を実現する方法を紹介します。
1. Provide と inject
provide と inject は、Vue2.2.0 バージョン以降の新しい API で、マルチレイヤー コンポーネント間のデータ転送を実現するために使用されます。 Provide を使用すると、コンポーネントはそのすべての子孫コンポーネントに依存関係を注入でき、Inject はこの依存関係を受け取って使用できます。
provide と inject は、主に element-ui などの上位プラグイン/コンポーネント ライブラリに使用されます。 element-ui では、そのコンポーネントはすべてトップレベルのコンポーネント ライブラリに依存します。このコンポーネント ライブラリは、すべてのサブコンポーネントにいくつかのパブリック変数とメソッドを提供する必要があります。これらのデータの転送には、Provide と Inject が使用されます。
2. Provide と inject の使用
コンポーネント内で Provide を使用すると、子コンポーネントにインジェクション ポイントを提供できるため、子コンポーネントは親コンポーネントによって提供されるデータを取得できます。例:
// 父组件 export default { provide () { return { theme: this.theme } }, data () { return { theme: 'light' } } } // 子组件 export default { inject: ['theme'], mounted () { console.log(this.theme) // light } }
上の例では、親コンポーネントは、provide を使用してデータを提供し、データ オブジェクトを子孫コンポーネントに公開します。ここでのデータは文字列型です。 Provideの方法はprovide関数を使うことになりますが、provideの公式ドキュメントによれば、この関数の戻り値はオブジェクトとなっています。オブジェクト内のキーは子孫を注入するときに使用でき、値は注入されるデータであり、変数や関数などにすることができます。
子コンポーネントで挿入を使用すると、親コンポーネントから提供されるデータを受け取ることができます。例:
export default { inject: ['theme'], mounted () { console.log(this.theme) // light } }
この例では、子コンポーネントはコンポーネント オプションの挿入オプションを使用してデータを受信します。 「inject: [key]」 ここで、key は親コンポーネントで公開されるデータ オブジェクトのキーです。ここでのキーは、provide 関数によって提供されるキーと一致します。デフォルトでは、依存関係は親で検索されることに注意してください。親で検索したくない場合は、inject の srcoll を false に設定する必要があります。子コンポーネントは、親コンポーネントによって提供されるデータのみを挿入できます。
3.provide と inject に関する注意事項
- provide によって挿入されたデータは、子孫コンポーネントで使用できますが、その親コンポーネントでは使用できません。
provideとinjectの仕組みでは、provideで提供されたデータをinjectで子孫コンポーネントに注入することができます。ただし、データを受信するために親コンポーネントでも inject が使用されている場合、inject はデフォルトで親コンポーネントで提供されたデータを検索し、Vue は子孫との一貫性を保つために親コンポーネントを検索しないため、効果はありません。コンポーネントを提供します。
- データを返すために、provide でアロー関数を使用しないでください。
provide はデータを提供するためにオブジェクトを返す必要があるため、オブジェクトを返すためにアロー関数をよく使用します。例:
export default { provide: () => ({ theme: 'light' }) }
ただし、ほとんどの場合、アローは使用しません。アロー関数はこれを指していないため、データを提供する関数。 Provide でアロー関数を使用すると、正しいコンテキストが取得されず、データの変更に応答しません。
- provide および inject で $ 記号で始まる名前を使用することはお勧めできません。
Provide および Inject の $ 記号で始まる名前付けは、Vue によって予約された命名規則であるため、提供されたデータの開始に $ 記号を使用することはお勧めしません。 Provide で $ 記号で始まる名前を使用すると、いくつかの問題が発生する可能性がありますが、inject で $ 記号で始まる名前を使用すると無視されます。
4. 使用シナリオ
provide/inject の主な目的は、コンポーネント レベル全体にわたるコンポーネント ライブラリを構築することです。具体的には、複数のコンポーネントがテーマの色や言語など、同じ情報やステータスの一部を共有します。
実際の開発プロセスでは、シナリオが簡単に想像できます: アプリまたはページには、多くの同様のコンポーネントが存在する可能性があります。これらのコンポーネントは同じ状態またはメソッドを使用する必要があります。provide /inject を使用できます。これらの共有情報とステータスをレベル間で受け渡し、冗長なコードと作業の重複を回避します。
同時に、ミックスインを使用してコードの重複や冗長性を回避し、コードをエレガントでクリーンで保守しやすくすることもできます。
5. 概要
provide/inject の使用は効率的なデータ転送方法であり、祖先と子孫の複数のレイヤーにわたるデータ転送を実現し、props の使用を減らすのに役立ちます。ただし、provide/inject を使用する場合は、コンポーネントのパフォーマンスと正確さに影響を与えないようにするために、いくつかの注意事項に従う必要があることに注意してください。同時に、実際のアプリケーションでは、シナリオの詳細な分析と、データ転送のための Provide/Inject、props、または vuex の合理的な使用が必要です。
以上がVue で Provide/Inject を使用して、祖先と子孫の複数のレイヤーにデータを渡す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









HTMLテンプレートのボタンをメソッドにバインドすることにより、VUEボタンに関数を追加できます。 VUEインスタンスでメソッドを定義し、関数ロジックを書き込みます。

vue.jsでBootstrapを使用すると、5つのステップに分かれています。ブートストラップをインストールします。 main.jsにブートストラップをインポートしますブートストラップコンポーネントをテンプレートで直接使用します。オプション:カスタムスタイル。オプション:プラグインを使用します。

vue.jsでJSファイルを参照するには3つの方法があります。タグ;; mounted()ライフサイクルフックを使用した動的インポート。 Vuex State Management Libraryを介してインポートします。

Vue.jsの監視オプションにより、開発者は特定のデータの変更をリッスンできます。データが変更されたら、Watchはコールバック関数をトリガーして更新ビューまたはその他のタスクを実行します。その構成オプションには、すぐにコールバックを実行するかどうかを指定する即時と、オブジェクトまたは配列の変更を再帰的に聴くかどうかを指定するDEEPが含まれます。

VUEマルチページ開発は、VUE.JSフレームワークを使用してアプリケーションを構築する方法です。アプリケーションは別々のページに分割されます。コードメンテナンス:アプリケーションを複数のページに分割すると、コードの管理とメンテナンスが容易になります。モジュール性:各ページは、簡単に再利用および交換するための別のモジュールとして使用できます。簡単なルーティング:ページ間のナビゲーションは、単純なルーティング構成を介して管理できます。 SEOの最適化:各ページには独自のURLがあり、SEOに役立ちます。

vue.jsには、前のページに戻る4つの方法があります。$ router.go(-1)$ router.back()outes< router-link to ="/" Component Window.history.back()、およびメソッド選択はシーンに依存します。

Vue Devtoolsを使用してブラウザのコンソールでVueタブを表示することにより、Vueバージョンを照会できます。 NPMを使用して、「NPM List -G Vue」コマンドを実行します。 package.jsonファイルの「依存関係」オブジェクトでVueアイテムを見つけます。 Vue CLIプロジェクトの場合、「Vue -Version」コマンドを実行します。 < script>でバージョン情報を確認してくださいVueファイルを参照するHTMLファイルにタグを付けます。

VUEの関数傍受は、指定された期間内に関数が呼び出され、パフォーマンスの問題を防ぐ回数を制限するために使用される手法です。実装方法は次のとおりです。LodashLibrary:Import {Debounce}から「Lodash」からインポート。 debounce関数を使用して、インターセプト関数を作成します。インターセプト関数を呼び出すと、制御関数は500ミリ秒でせいぜい1回呼び出されます。
