目次
概要
provide/inject の使用法
親コンポーネントはデータを提供します
サブコンポーネントはデータを提供します
provide/inject の実装プロセス
ホームページ ウェブフロントエンド Vue.js VUE3 入門: Provide/Inject を使用してコンポーネント間で共有する

VUE3 入門: Provide/Inject を使用してコンポーネント間で共有する

Jun 16, 2023 am 08:34 AM
- vue - provide - inject

VUE は、高い使いやすさ、強力な柔軟性、優れたパフォーマンスという利点を備えた最新のフロントエンド フレームワークで、フロントエンド開発者の間で人気が高まっており、好まれています。 VUE3 バージョンは、パフォーマンス、アーキテクチャ設計が向上し、さらにユーザーフレンドリーになっています。 VUE3 は、コンポーネント間でデータを共有する新しい方法 (提供/挿入) を提供します。この記事では、provide/injectの使い方と実装プロセスを詳しく紹介します。

概要

provide/inject は、コンポーネント間でデータを共有するために VUE3 によって公式に推奨されている方法です。 VUE2 では、props/$emit と Vuex を介してコンポーネント間のデータ通信を実装することがよくあります。 Provide/Inject の最大の特徴は、より暗黙的な方法でデータ共有を実装し、コードをより読みやすく、保守しやすくすることです。

provide/inject の使用法

provide/inject の使用法は非常に簡単です。以下にいくつかの例を示します:

親コンポーネントはデータを提供します

<template>
  <child-component />
</template>

<script>
import { provide } from 'vue'
import ChildComponent from './ChildComponent.vue'

export default {
  components: { ChildComponent },
  setup() {
    provide('message', 'Hello from parent')
  }
}
</script>
ログイン後にコピー

In親コンポーネントでは、provide メソッドを通じて message という名前のデータを提供し、その値を「Hello fromparent」に設定します。次に、サブコンポーネントで inject を使用してこのデータを取得できます:

<template>
  <div>{{ message }}</div>
</template>

<script>
import { inject } from 'vue'

export default {
  setup() {
    const message = inject('message')
    return { message }
  }
}
</script>
ログイン後にコピー
ログイン後にコピー

サブコンポーネントでは、inject メソッドを使用して message という名前のデータを取得します。この時点で、このデータは template で使用できます。

サブコンポーネントはデータを提供します

<template>
  <child-component />
</template>

<script>
import { ref } from 'vue'
import ChildComponent from './ChildComponent.vue'

export default {
  components: { ChildComponent },
  setup() {
    const message = ref('Hello from parent')
    return { message }
  },
  provide: {
    message: this.message
  }
}
</script>
ログイン後にコピー

この例では、親コンポーネントに message という名前の応答データを定義し、その値を「Hello fromparent」に設定します。次に、provide メソッドを介してこのデータを子コンポーネントに提供します。子コンポーネントでは、inject メソッドを通じてメッセージを取得し、それをテンプレートで使用します。

<template>
  <div>{{ message }}</div>
</template>

<script>
import { inject } from 'vue'

export default {
  setup() {
    const message = inject('message')
    return { message }
  }
}
</script>
ログイン後にコピー
ログイン後にコピー

ここで定義するメッセージ データは応答型であることに注意してください。

provide/inject の実装プロセス

provide/inject の実装は、VUE3 の新しい応答システムに依存します。 VUE3 では、provide / inject は provideParent / injectSetupRef に依存して機能します。 ProvideParent 関数は Provide メソッドと似ており、データのキー名と値を受け取りますが、injectSetupRef は親コンポーネントからデータを取得するために使用されます。具体的な実装プロセスは次のとおりです。

// provide函数
export function provide(key, value) {
  const vm = getCurrentInstance();
  if (!vm) {
    console.warn(`provide() can only be used inside setup().`);
  } else {
    let provides  = vm.provides;
    const parent = vm.parent;
    if (provides === EMPTY_OBJ) provides = vm.provides = Object.create(parent.provides);
    provides[key] = value;
  }
}

// inject函数
export function inject(key, defaultValue) {
  const vm = getCurrentInstance();
  if (vm) {
    const provides = vm.parent.provides;
    if (key in provides) {
      return provides[key];
    } else if (arguments.length > 1) {
      return defaultValue;
    } else {
      console.warn(`injection "${String(key)}" not found.`);
    }
  } else {
    console.warn(`inject() can only be used inside setup() or functional components.`);
  }
}
ログイン後にコピー

provide 関数では、getCurrentInstance 関数を通じて現在のインスタンスを取得し、提供されたデータを現在のインスタンスの Provides オブジェクトに保存します。現在のインスタンスが存在しない場合は、setup 関数で Provide 関数が呼び出されず、警告メッセージが返されることを意味します。

inject 関数では、getCurrentInstance 関数を通じて現在のインスタンスも取得し、親コンポーネントの Provides オブジェクトからキーに対応する値を取得します。キーに対応する値が存在しない場合は、defaultValue が返されます。現在のインスタンスが存在しない場合は、setup 関数または機能コンポーネントで inject 関数が呼び出されなかったことを意味し、警告メッセージが返されます。

概要

この記事の導入部を通じて、provide/inject が VUE3 コンポーネント間でデータを共有する優れた方法であることがわかります。より暗黙的な方法でデータ共有を実装し、コードをより読みやすく、保守しやすくします。使用中、提供されるデータは応答性があり、ネストされたコンポーネントで使用できることに注意してください。同時に、提供するデータがprovideに存在しない場合、arguments[1]で渡されたパラメータがデフォルト値として使用されることにも注意してください。とパラメータの値。

以上がVUE3 入門: 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)

VUE3 入門: Provide/Inject を使用してコンポーネント間で共有する VUE3 入門: Provide/Inject を使用してコンポーネント間で共有する Jun 16, 2023 am 08:34 AM

VUE は、高い使いやすさ、強力な柔軟性、優れたパフォーマンスという利点を備えた最新のフロントエンド フレームワークであり、フロントエンド開発者の間で人気が高まっており、好まれています。 VUE3 バージョンは、パフォーマンス、アーキテクチャ設計が向上し、さらにユーザーフレンドリーになっています。 VUE3 は、コンポーネント間でデータを共有する機能 (提供/注入) を実現する新しい方法を提供します。この記事では、provide/injectの使い方と実装プロセスを詳しく紹介します。概要提供/

Vue で v-on:click.once を使用して、イベントが 1 回だけトリガーされることを認識する方法 Vue で v-on:click.once を使用して、イベントが 1 回だけトリガーされることを認識する方法 Jun 11, 2023 pm 12:52 PM

Vue は、インタラクティブなユーザー インターフェイスを実装するための豊富な命令を提供する人気のある JavaScript フレームワークです。このうち、イベント処理命令 v-on はラベルに追加してイベント処理関数をバインドすることができます。ただし、ボタンがクリックされるたびに対応するイベント ハンドラーをトリガーするのではなく、ボタンが 1 回だけクリックされるようにしたい場合があります。では、Vue で v-on:click.once を使用して、イベントが 1 回だけトリガーされることを認識するにはどうすればよいでしょうか? Vue で v-on:click.once を使用する方法

単一ファイル コンポーネントを使用して Vue でコンポーネントのモジュール化を実装するためのヒントとベスト プラクティス 単一ファイル コンポーネントを使用して Vue でコンポーネントのモジュール化を実装するためのヒントとベスト プラクティス Jun 25, 2023 am 08:12 AM

Vue は、シングルページ アプリケーションや動的 Web サイトの開発に広く使用されている人気のある JavaScript フレームワークです。その中でも、コンポーネント化とモジュール化はその主要な機能の 1 つです。 Vue は、Single-File Components (SFC) を使用してコンポーネントのモジュール化を実装し、コンポーネントの作成、保守、テストの効率を向上させます。この記事では、単一ファイル コンポーネントを使用して Vue コンポーネントをモジュール化するためのヒントとベスト プラクティスを紹介します。単一ファイルコンポーネントとは何ですか?単一ファイルコンポーネントとは、

Vue 命令の詳細な説明: v-model、v-if、v-for など。 Vue 命令の詳細な説明: v-model、v-if、v-for など。 Jun 09, 2023 pm 04:06 PM

フロントエンド テクノロジの継続的な開発により、フロントエンド フレームワークは最新の Web アプリケーション開発の重要な部分になりました。中でも Vue.js は軽量で優れた MVVM フレームワークとしてフロントエンド開発者に支持されています。 Vue.js コマンドは Vue.js フレームワークの中で非常に重要な機能モジュールであり、その中でも v-model、v-if、v-for などのコマンドは Vue.js アプリケーションを開発する上で欠かせないツールです。以下では、これらの命令の使用法と機能を詳細に分析します。 1.v-mo

Vue がファイルアップロード機能を実装する方法 Vue がファイルアップロード機能を実装する方法 Feb 19, 2024 pm 06:23 PM

vue のアップロード機能の実装方法. Web アプリケーションの開発に伴い、ファイルのアップロード機能がますます一般的になってきました。 Vue は、最新の Web アプリケーションを構築する便利な方法を提供する人気のある JavaScript フレームワークです。 Vue では、Vue の Upload コンポーネントを使用してファイルのアップロード機能を実装できます。この記事では、Vue を使用してファイル アップロード機能を実装する方法と具体的なコード例を紹介します。まず、必要な依存関係を Vue プロジェクトにインストールします。 nを使用できます

Vue を使用してタグ クラウド効果を実装する方法 Vue を使用してタグ クラウド効果を実装する方法 Sep 20, 2023 pm 03:21 PM

Vue を使用してタグ クラウド効果を実装する方法 はじめに: タグ クラウドは、タグの人気や関連性を示すために異なるフォント サイズでタグを表示する一般的な Web ページ効果です。この記事では、Vue フレームワークを使用してタグ クラウド効果を実装する方法を紹介し、具体的なコード例を示します。ステップ 1: Vue プロジェクトを構築する まず、基本的な Vue プロジェクトを構築する必要があります。 VueCLI を使用すると、プロジェクトのスケルトンをすばやく生成できます。コマンド ライン ツールを開き、次のコマンドを入力します: vuecreate

Vue と Vue-Router: コンポーネントでルーティング情報を使用するにはどうすればよいですか? Vue と Vue-Router: コンポーネントでルーティング情報を使用するにはどうすればよいですか? Dec 17, 2023 pm 01:46 PM

Vue と Vue-Router: コンポーネントでルーティング情報を使用するには?はじめに: Vue.js の開発プロセスでは、現在の URL パラメーターの取得、異なるページ間のジャンプなど、コンポーネント内のルーティング情報を取得して使用することが必要になることがよくあります。 Vue.js にはフロントエンドのルーティング機能を実装するための Vue-Router プラグインが用意されており、コンポーネント内で Vue-Router を使用してルーティング情報を取得・活用する方法を紹介します。 Vue-Router の概要: Vue-Router は Vue です

Vue3 の nextTick 関数: DOM 更新後の操作の処理 Vue3 の nextTick 関数: DOM 更新後の操作の処理 Jun 18, 2023 am 10:06 AM

Vue3 は最近非常に人気のあるフロントエンド フレームワークであり、その最大の特徴は仮想 DOM 技術、つまり、Vue が実 DOM ツリーを仮想 DOM ツリーに変換し、仮想 DOM 上で操作した後、実 DOM ツリーに変換することです。ツリー DOM ツリー。このテクノロジーにより、DOM をより効率的に操作できるようになり、DOM の数が多い場合でも非常に優れたパフォーマンスを実現できます。しかし、仮想DOM技術の特殊性により、DOMを操作する際に最新のDOをすぐに取得できない場合があります。

See all articles