Vue コンポーネント間で通信する 6 つの方法
Vue は、シングルページ アプリケーションを構築するための人気のある JavaScript フレームワークです。 Vue では、コンポーネントはアプリケーションを構築するための基本単位であり、データの表示と処理に使用される再利用可能なコード ブロックです。コンポーネント通信は、コンポーネント間のデータ転送と対話のための中心的なメカニズムの 1 つです。この記事では、コンポーネントが通信する 6 つの方法について説明します。
1. プロップとイベント
プロップとイベントは、Vue の最も基本的なコンポーネント通信メソッドです。親コンポーネントは、props を通じて子コンポーネントにデータを渡します。子コンポーネントは、イベント コンストラクターを通じて親コンポーネントにデータを送信します。この通信方式は片方向伝送が特徴です。
親コンポーネントは、props を通じて子コンポーネントにデータを渡します:
<template> <child-component :message="parentMessage"></child-component> </template> <script> import ChildComponent from './ChildComponent.vue' export default { data() { return { parentMessage: 'this is parent' } }, components: { ChildComponent } } </script>
子コンポーネントでは、props を宣言し、props を使用して親コンポーネントからデータを受け取る必要があります:
<template> <div>{{ message }}</div> </template> <script> export default { props: ['message'] } </script>
次に、子コンポーネントはイベントを通じて親コンポーネントにデータを送信します。
<template> <button @click="updateParentMessage">Update Parent Message</button> </template> <script> export default { methods: { updateParentMessage() { this.$emit('update-message', 'this is child'); } } } </script>
親コンポーネントでは、子コンポーネントのイベントをリッスンし、イベント リスニングで子コンポーネントからデータを受信する必要があります。 function:
<template> <child-component :message="parentMessage" @update-message="updateMessage"></child-component> </template> <script> import ChildComponent from './ChildComponent.vue' export default { data() { return { parentMessage: 'this is parent' } }, components: { ChildComponent }, methods: { updateMessage(message) { this.parentMessage = message; } } } </script>
2. Vuex
Vuex は、Vue の状態管理用の公式プラグインです。 Vuex はグローバルな状態管理モデルを実装しています。ストアを通じてアプリケーションのすべてのコンポーネントの状態を一元管理します。複数のコンポーネントが状態を共有する場合、Vuex を使用すると、コンポーネント間のデータ交換と通信の管理が容易になります。
まず、Vuex ストアを作成する必要があります:
import Vuex from 'vuex' import Vue from 'vue' Vue.use(Vuex) const store = new Vuex.Store({ state: { message: 'hello world' }, mutations: { updateMessage(state, message) { state.message = message } }, actions: { updateMessage({ commit }, message) { commit('updateMessage', message) } }, getters: { getMessage: state => state.message } }) export default store
コンポーネントでは、$store を使用してストア内の状態にアクセスし、commit メソッドを使用して変更するミューテーションを送信できます。状態:
<template> <div>{{ this.$store.getters.getMessage }}</div> <button @click="updateMessage">Update Message</button> </template> <script> export default { methods: { updateMessage() { this.$store.dispatch('updateMessage', 'hello vuex') } } } </script>
3. $parent と $children
Vue のすべてのコンポーネントには、$parent プロパティと $children プロパティがあります。 $parent プロパティはコンポーネントの親コンポーネントを指し、$children プロパティはコンポーネントの子コンポーネントを指します。 $parent プロパティと $children プロパティを通じて、コンポーネントは親コンポーネントと子コンポーネントのデータとメソッドに直接アクセスできます。
たとえば、親コンポーネントは、$children 属性を通じて子コンポーネントのデータとメソッドにアクセスできます。
<template> <div> {{ $children[0].message }} <button @click="$children[0].updateMessage">Update message</button> </div> </template>
子コンポーネントでは、message メソッドと updateMessage メソッドを定義する必要があります。
<template> <div>{{ message }}</div> </template> <script> export default { data() { return { message: 'hello child' } }, methods: { updateMessage() { this.message = 'hello parent' } } } </script>
four , $refs
Vue のすべてのコンポーネントには $refs 属性があります。 $refs 属性は、コンポーネント内の ref 属性を使用して名前が付けられたサブコンポーネントまたは DOM 要素への参照を含むオブジェクトです。 $refs 属性を通じて、コンポーネントは相互に参照したり呼び出したりできます。
たとえば、親コンポーネントの ref 属性を通じてサブコンポーネントの参照を取得できます:
<template> <div> <child-component ref="childComponent"></child-component> <button @click="updateMessage">Update message</button> </div> </template> <script> import ChildComponent from './ChildComponent.vue' export default { components: { ChildComponent }, methods: { updateMessage() { this.$refs.childComponent.updateMessage() } } } </script>
サブコンポーネントでは、updateMessage メソッドを定義する必要があります:
<template> <div>{{ message }}</div> </template> <script> export default { data() { return { message: 'hello child' } }, methods: { updateMessage() { this.message = 'hello parent' } } } </script>
5. イベント バス
イベント バスは、Vue コンポーネント間でイベントを効率的に配信できる、広く使用されている中央イベント システムです。イベント バスは、$emit メソッドを通じて他の Vue コンポーネントにイベントを送信したり、$on メソッドを通じて他の Vue コンポーネントから送信されたイベントを受信したりできる単純な Vue インスタンスです。
イベント バスを実装するときは、新しい Vue インスタンスを作成する必要があります:
import Vue from 'vue' const bus = new Vue() export default bus
次に、コンポーネントにイベント バスを導入し、$emit を使用してイベントを送信し、$on を使用してイベントを受信します。 . :
// 发送事件 import Bus from './Bus.js' Bus.$emit('event-name', data) // 接收事件 import Bus from './Bus.js' Bus.$on('event-name', (data) => { console.log(data) })
6. Provide と Inject
Vue 2.2 の新しい Provide と Inject は、高度なコンポーネント通信方法です。 Provide と Inject を使用すると、親コンポーネントは、子に指示するだけでなく、すべての子孫コンポーネントにデータを渡すことができます。 Provide と Inject は、props、event、$parent/$children とは異なるコンポーネント通信の形式であり、より柔軟でカプセル化された通信方法です。
親コンポーネントは、provide を通じてデータを提供します:
<template> <child-component></child-component> </template> <script> export default { provide: { message: 'hello provide' } } </script>
子コンポーネントでは、親コンポーネントから渡されたデータを受け取るために inject を定義する必要があります:
<template> <div>{{ message }}</div> </template> <script> export default { inject: ['message'] } </script>
これらは次のとおりです。 6種類のVueコンポーネント通信方法の紹介。アプリケーションのシナリオが異なれば、コンポーネントの通信方法も異なります。これらの通信方法をマスターすると、Vue コンポーネントの開発をより効率的、シンプル、かつ柔軟にすることができます。
以上がVue コンポーネント間で通信する 6 つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











Vue コンポーネント通信: コンポーネント通信にコールバック関数を使用する Vue アプリケーションでは、情報を共有して相互に連携できるように、さまざまなコンポーネントが相互に通信できるようにする必要がある場合があります。 Vue はコンポーネント間の通信を実装するさまざまな方法を提供します。一般的な方法の 1 つはコールバック関数を使用することです。コールバック関数とは、関数を引数として別の関数に渡し、特定のイベントが発生したときに呼び出される仕組みです。 Vue では、コールバック関数を使用してコンポーネント間の通信を実装できるため、コンポーネントは

Vue コンポーネント通信: v-cloak ディレクティブを使用して表示通信を初期化します Vue 開発において、コンポーネント通信は非常に重要なトピックです。 Vue はさまざまな通信方法を提供しますが、その中で v-cloak ディレクティブを使用して表示通信を初期化する方法が一般的です。この記事では、コンポーネント間の通信に v-cloak ディレクティブを使用する方法を学び、コード例を使用して詳しく説明します。まず、v-cloak 命令が何をするのかを理解しましょう。 v-cloak ディレクティブは Vu です。

Vue コンポーネント通信: カスタム イベント リスニングには $on を使用します。Vue では、コンポーネントは独立しており、各コンポーネントは独自のライフ サイクルとデータを持ちます。しかし、実際の開発プロセスではコンポーネント間の通信は避けられません。 Vue は、コンポーネント通信の非常に柔軟かつ効率的な方法、つまりカスタム イベント リスニングを提供します。 Vue のカスタム イベント リスニング メカニズムは、パブリッシュ/サブスクライブ モデルに基づいて実装されています。 Vue インスタンスの $on メソッドを使用してコンポーネント内のカスタム イベントをリッスンしたり、Vue インスタンスの $emit メソッドを使用したりできます。

Vue コンポーネント通信: フォームの双方向バインディング通信には v-model ディレクティブを使用します。 Vue.js は、軽量で柔軟かつ効率的なユーザー インターフェイスを構築するための進歩的な JavaScript フレームワークです。 Vue アプリケーションでは、コンポーネント通信は非常に重要な機能です。 Vue は、コンポーネント間の通信を実装するさまざまな方法を提供します。その中で、フォーム双方向バインディング通信に v-model ディレクティブを使用するのが一般的で便利な方法です。 Vue では、v-model ディレクティブがフォームで使用されます

Vue コンポーネント通信: $watch を使用したデータ監視 Vue 開発では、コンポーネント通信が一般的な要件です。 Vue では、コンポーネント間の通信を実装するさまざまな方法が提供されており、一般的な方法の 1 つは、データ監視に $watch を使用することです。この記事では、$watch の使用法を紹介し、対応するコード例を示します。 Vue のインスタンス オブジェクトは、データの変更を監視するための $watch メソッドを提供します。 $watch は、監視するデータのプロパティ名とコールバック関数の 2 つのパラメータを受け入れます。データを聞くとき

開発者として、私たちは管理しやすく保守しやすく、デバッグやテストも容易なコードを生成したいと考えています。これを実現するために、パターンと呼ばれるベスト プラクティスを採用します。パターンは、特定のタスクを効率的かつ予測可能な方法で達成するのに役立つ実証済みのアルゴリズムとアーキテクチャです。このチュートリアルでは、最も一般的な Vue.js コンポーネントの通信パターンと、避けるべきいくつかの落とし穴について見ていきます。実生活では、すべての問題に対する唯一の解決策がないことは誰もが知っています。同様に、Vue.js アプリケーション開発にも、すべてのプログラミング シナリオに適用できる普遍的なパターンはありません。各モードには独自の長所と短所があり、特定の使用例に適しています。 Vue.js 開発者にとって最も重要なことは、

Vue コンポーネント通信: データ転送には v-bind 命令を使用します。Vue.js は、強力なコンポーネント開発機能を提供する人気のあるフロントエンド フレームワークです。 Vue アプリケーションでは、コンポーネントの通信は重要な問題です。 v-bind命令はVueフレームワークが提供するデータ転送メソッドで、この記事ではv-bind命令を使ってコンポーネント間でデータを転送する方法を紹介します。 Vue では、コンポーネント通信は、親子コンポーネント通信と兄弟コンポーネント通信の 2 つの状況に分類できます。以下、この2つの側面からそれぞれ紹介していきます。

Vue は、単一ページ アプリケーションを構築するための人気のある JavaScript フレームワークです。 Vue では、コンポーネントはアプリケーションを構築するための基本単位であり、データの表示と処理に使用される再利用可能なコード ブロックです。コンポーネント通信は、コンポーネント間のデータ転送と対話のための中心的なメカニズムの 1 つです。この記事では、コンポーネントが通信する 6 つの方法について説明します。 1. プロップとイベント プロップとイベントは、Vue の最も基本的なコンポーネント通信メソッドです。小道具を通して、
