Vue での Provide と Inject の使用について説明する記事
Vue で Provide と Inject を使用するにはどうすればよいですか? Vueでのprovideとinjectの使い方については以下の記事で紹介していますので、ご参考になれば幸いです。
vue2.0
provide
と inject
はオプション (設定)API
メソッドは、コンポーネント間 (祖父母と孫) 通信の問題を解決するためにコンポーネントで使用されます。
は、親コンポーネントと子コンポーネント間の通信です。親コンポーネントは、カスタム属性を通じてリストされます。 、および sub -コンポーネントは props
を通じて受信されます。レイヤーごとに渡す場合、この方法はより面倒で柔軟性が低くなります。
provide
および inject
が解決策です: クロスレベルコンポーネントのデータ転送を実現するために、祖先コンポーネントから孫コンポーネントにデータを渡す方法
vue3.0
では、同じ provide
と inject
は、よりシンプルで使いやすく提供されていますが、純粋に概念的な観点から見ると、比較的抽象的で理解しにくいです。 [関連する推奨事項: 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
ではなくデフォルト値であり、# と同様であることを示します。ライフサイクルフックを登録する ##API
の
は、コンポーネントの setup()
フェーズで同期的に呼び出す必要があります具体的なコード例
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>import {inject,toRefs} from "vue";
const person = inject(&#39;person&#39;);
// 若是使用解构,则会丢失响应式,修改数据时,页面不会更新,具体解决,可以引入toRef或toRefs函数
const {name,website} = toRefs(person);</pre><div class="contentsignin">ログイン後にコピー</div></div>
孫コンポーネントのテンプレートを読み取ることができ、親コンポーネントから渡されたデータも応答性をサポートします
{{person.name}}---{{person.website}}
分割を使用する場合、変数をテンプレート内で直接使用できます
{{name}}--{{website}}
分割を使用する場合、変数をテンプレート内で直接使用できます
{{name}}--{{website}}
変数を分割し、データを応答性を高めるには、toRef() または
toRefs() を使用する必要があります。データを応答性に変換する以下は完全な例です
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>import { inject } from &#39;vue&#39;
import { fooSymbol } from &#39;./injectionSymbols&#39;
// 注入值的默认方式
const foo = inject(&#39;foo&#39;)
// 注入响应式的值
const count = inject(&#39;count&#39;)
// 通过 Symbol 类型的 key 注入
const foo2 = inject(fooSymbol)
// 注入一个值,若为空则使用提供的默认值
const bar = inject(&#39;foo&#39;, &#39;default value&#39;)
// 注入一个值,若为空则使用提供的工厂函数
const baz = inject(&#39;foo&#39;, () => new Map())
// 注入时为了表明提供的默认值是个函数,需要传入第三个参数
const fn = inject(&#39;function&#39;, () => {}, 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 サイトの他の関連記事を参照してください。

ホット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)

ホットトピック











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

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

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

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

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

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

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

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