目次
provide() 関数
##inject() 関数
ホームページ ウェブフロントエンド Vue.js Vue での Provide と Inject の使用について説明する記事

Vue での Provide と Inject の使用について説明する記事

Apr 10, 2023 pm 06:52 PM
vue javascript

Vue で Provide と Inject を使用するにはどうすればよいですか? Vueでのprovideとinjectの使い方については以下の記事で紹介していますので、ご参考になれば幸いです。

Vue での Provide と Inject の使用について説明する記事

vue2.0provideinject はオプション (設定)API メソッドは、コンポーネント間 (祖父母と孫) 通信の問題を解決するためにコンポーネントで使用されます。

は、親コンポーネントと子コンポーネント間の通信です。親コンポーネントは、カスタム属性を通じてリストされます。 、および sub -コンポーネントは props を通じて受信されます。レイヤーごとに渡す場合、この方法はより面倒で柔軟性が低くなります。

provide および inject が解決策です: クロスレベルコンポーネントのデータ転送を実現するために、祖先コンポーネントから孫コンポーネントにデータを渡す方法

vue3.0 では、同じ provideinject は、よりシンプルで使いやすく提供されていますが、純粋に概念的な観点から見ると、比較的抽象的で理解しにくいです。 [関連する推奨事項: vuejs ビデオ チュートリアル Web フロントエンド開発 ]

引き続き具体的な例から開始

provide() 関数

定義: 子孫コンポーネントによって注入できる値を提供します。

実装: 親コンポーネントには provide があります。 、データを提供するオプション。親コンポーネントによって渡されたデータの使用を開始するための inject オプションが子孫コンポーネントにあります。

provide (最初のパラメーター、2 番目のパラメーター) ) 、2 つのパラメーターを受け取ります。最初のパラメーターは注入される key です。文字列または symbol にすることができます。2 番目のパラメーターは注入される値です (子孫コンポーネントに渡される特定のデータ)

provide は、vue

によって提供される公式

componsion API です。具体的な例コードは次のとおりです

import {reactive,provide} from "vue";

let person = reactive({name: 'itclanCoder',website: 'https://coder.itclan.cn'});
provide('person',person);
ログイン後にコピー

上記の provide で値を提供するだけで十分です。次に、このデータを子孫コンポーネントに渡す方法は、inject # を使用する必要があります。

##inject() 関数

定義: 祖先 (親) コンポーネントまたはアプリケーション全体によって提供された値を注入します

実装: 親 (祖先) コンポーネントによって渡された値を受け取る

inject(最初のパラメーター、2 番目のパラメーター (オプション)): 最初のパラメーターは、親 (祖先) コンポーネントから取得された、挿入された key です。両方とも一貫している必要があります。

Vue は、親コンポーネント チェーンを横断し、提供されたコンポーネントを決定します。親コンポーネント チェーン上の複数のコンポーネントが同じ key を提供する場合、より近いコンポーネントが、チェーンのさらに上のコンポーネントによって提供される値を上書きします。値

key と一致する値がない場合、デフォルト値#が指定されていない限り、inject() 関数は unknown を返します。パラメーターはオプションです。つまり、一致する key

がない場合、デフォルト値が使用されます。作成がより複雑な値を返す関数にすることもできます。デフォルト値自体が関数

、次に false

を 3 番目のパラメーターとして渡す必要があります。これは、この関数がファクトリー関数

ではなくデフォルト値であり、# と同様であることを示します。ライフサイクルフックを登録する ##API

inject()

は、コンポーネントの setup() フェーズで同期的に呼び出す必要があります具体的なコード例<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>import {inject,toRefs} from &quot;vue&quot;; const person = inject(&amp;#39;person&amp;#39;); // 若是使用解构,则会丢失响应式,修改数据时,页面不会更新,具体解决,可以引入toRef或toRefs函数 const {name,website} = toRefs(person);</pre><div class="contentsignin">ログイン後にコピー</div></div>孫コンポーネントのテンプレートを読み取ることができ、親コンポーネントから渡されたデータも応答性をサポートします

{{person.name}}---{{person.website}}
ログイン後にコピー

分割を使用する場合、変数をテンプレート内で直接使用できます

{{name}}--{{website}}
ログイン後にコピー
ログイン後にコピー

分割を使用する場合、変数をテンプレート内で直接使用できます

{{name}}--{{website}}
ログイン後にコピー
ログイン後にコピー

Note

変数を分割し、データを応答性を高めるには、toRef() または

toRefs() を使用する必要があります。

データを応答性に変換する以下は完全な例です<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>import { inject } from &amp;#39;vue&amp;#39; import { fooSymbol } from &amp;#39;./injectionSymbols&amp;#39; // 注入值的默认方式 const foo = inject(&amp;#39;foo&amp;#39;) // 注入响应式的值 const count = inject(&amp;#39;count&amp;#39;) // 通过 Symbol 类型的 key 注入 const foo2 = inject(fooSymbol) // 注入一个值,若为空则使用提供的默认值 const bar = inject(&amp;#39;foo&amp;#39;, &amp;#39;default value&amp;#39;) // 注入一个值,若为空则使用提供的工厂函数 const baz = inject(&amp;#39;foo&amp;#39;, () =&gt; new Map()) // 注入时为了表明提供的默认值是个函数,需要传入第三个参数 const fn = inject(&amp;#39;function&amp;#39;, () =&gt; {}, false)</pre><div class="contentsignin">ログイン後にコピー</div></div>基本的に最初の方法を使用します。デフォルト値を挿入する最も一般的に使用される方法は、親コンポーネントによって提供される渡された値を受け取ることです。 ) および <p>inject()</p> は使用が比較的簡単で、コンポーネント間通信を解決する方法です。より深いネスト レベルを持つコンポーネントの場合、子孫コンポーネントが親コンポーネントのデータを使用したい場合<p></p>then このメソッドを使用してデータを転送できます。これは現在でも日常のビジネス開発に役立ち、面接で頻繁に聞かれる質問でもあります。クロスレベル コンポーネントと非親コンポーネントを解決する方法-子コンポーネントの通信<h2 data-id="heading-2"> <strong> (学習ビデオ共有: </strong>vuejs 入門チュートリアル</h2>、<p>基本プログラミング ビデオ<code>)

以上がVue での Provide と Inject の使用について説明する記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

vueでechartを使用する方法 vueでechartを使用する方法 May 09, 2024 pm 04:24 PM

Vue で ECharts を使用すると、アプリケーションにデータ視覚化機能を簡単に追加できます。具体的な手順には、ECharts および Vue ECharts パッケージのインストール、ECharts の導入、チャート コンポーネントの作成、オプションの構成、チャート コンポーネントの使用、Vue データに対応したチャートの作成、対話型機能の追加、および高度な使用法の使用が含まれます。

vue におけるエクスポートのデフォルトの役割 vue におけるエクスポートのデフォルトの役割 May 09, 2024 pm 06:48 PM

質問: Vue におけるエクスポートのデフォルトの役割は何ですか?詳細説明: エクスポートデフォルトは、コンポーネントのデフォルトのエクスポートを定義します。インポートすると、コンポーネントが自動的にインポートされます。インポートプロセスを簡素化し、明確さを改善し、競合を防ぎます。一般に、名前付きエクスポートとデフォルト エクスポートの両方を使用して、個々のコンポーネントをエクスポートし、グローバル コンポーネントを登録するために使用されます。

vueでのmap関数の使い方 vueでのmap関数の使い方 May 09, 2024 pm 06:54 PM

Vue.js マップ関数は、各要素が元の配列の各要素の変換結果である新しい配列を作成する組み込みの高階関数です。構文は、map(callbackFn) です。callbackFn は、配列内の各要素を最初の引数として受け取り、オプションでインデックスを 2 番目の引数として受け取り、値を返します。 map 関数は元の配列を変更しません。

Vue における onmounted の役割 Vue における onmounted の役割 May 09, 2024 pm 02:51 PM

onMounted は、Vue のコンポーネント マウント ライフ サイクル フックです。その機能は、コンポーネントが DOM にマウントされた後に、DOM 要素への参照の取得、データの設定、HTTP リクエストの送信、イベント リスナーの登録などの初期化操作を実行することです。コンポーネントが更新された後、またはコンポーネントが破棄される前に操作を実行する必要がある場合は、他のライフサイクル フックを使用できます。

Vueのフックとは何ですか Vueのフックとは何ですか May 09, 2024 pm 06:33 PM

Vue フックは、特定のイベントまたはライフサイクル ステージでアクションを実行するコールバック関数です。これらには、ライフサイクル フック (beforeCreate、mounted、beforeDestroy など)、イベント処理フック (クリック、入力、キーダウンなど)、およびカスタム フックが含まれます。フックはコンポーネントの制御を強化し、コンポーネントのライフサイクルに対応し、ユーザーの操作を処理し、コンポーネントの再利用性を向上させます。フックを使用するには、フック関数を定義し、ロジックを実行してオプションの値を返すだけです。

vue のイベント修飾子はどのようなシナリオに使用できますか? vue のイベント修飾子はどのようなシナリオに使用できますか? May 09, 2024 pm 02:33 PM

Vue.js イベント修飾子は、次のような特定の動作を追加するために使用されます。 デフォルト動作の防止 (.prevent) イベント バブリングの停止 (.stop) ワンタイム イベント (.once) イベントのキャプチャ (.capture) パッシブ イベント リスニング (.passive) アダプティブ修飾子 (.self)キー修飾子 (.key)

vue の onmounted は、react のどのライフサイクルに対応しますか vue の onmounted は、react のどのライフサイクルに対応しますか May 09, 2024 pm 01:42 PM

Vue の onMounted は、React の useEffect ライフサイクル メソッドに対応し、空の依存関係配列 [] を持ち、コンポーネントが DOM にマウントされた直後に実行されます。

vue での使用を約束する vue での使用を約束する May 09, 2024 pm 03:27 PM

Promise を使用すると、Vue.js で非同期操作を処理できます。手順には、Promise オブジェクトの作成、非同期操作の実行、結果に基づいた解決または拒否の呼び出し、および Promise の結果の処理 (成功を処理するには .then() を使用します) が含まれます。 、エラーを処理する .catch())。 Promise の利点には、読みやすさ、デバッグの容易さ、構成可能性が含まれます。

See all articles