ホームページ ウェブフロントエンド フロントエンドQ&A Vue コンポーネント間で呼び出しを行う方法

Vue コンポーネント間で呼び出しを行う方法

May 27, 2023 pm 05:23 PM

Vue は現代の Web 開発で非常に人気のある JavaScript フレームワークであり、そのコンポーネントは非常に重要な部分です。 Vue ではコンポーネントを再利用できますが、コンポーネント間の通信も開発時によく発生する問題です。この記事では、Vue コンポーネント間の通信の問題を紹介し、Vue コンポーネント間で「呼び出しを行う」方法を詳しく説明します。

1. Vue コンポーネント間の通信

Vue では、コンポーネント間の通信は主に、親子コンポーネント通信と非親子コンポーネント通信の 2 つの方法に分けられます。

1. 親子コンポーネントの通信

Vue コンポーネントでは、親コンポーネントは props を通じて子コンポーネントにデータを渡すことができます。

親コンポーネント テンプレート:

<template>
  <div>
    <child :message="message"></child>
  </div>
</template>
ログイン後にコピー

子コンポーネント スクリプト:

<script>
  export default {
    props: ['message']
  }
</script>
ログイン後にコピー

親コンポーネントが子コンポーネントにデータを渡す方法は非常に簡単で、props を追加するだけです。属性を子コンポーネントのタグに追加し、サブコンポーネントに必要な転送データを追加するだけです。

親コンポーネントから渡されたデータを受信した後、子コンポーネントはテンプレートでこのデータを使用できます。

<template>
  <div>
    {{message}}
  </div>
</template>
ログイン後にコピー

props を介して子コンポーネントにデータを送信することは、最も一般的に使用される親の 1 つです。 -Vue.one の子通信メソッド。実際には、親コンポーネントのメソッドを実行したり、親コンポーネントのデータを操作したりする必要がある場合もあります。この場合、イベント発行を使用して、親コンポーネントと子コンポーネント間の通信を行うことができます。

親コンポーネント:

<template>
  <div>
    <child @sendMsg="updateMessage"></child>
  </div>
</template>

<script>
  export default {
    data () {
      return {
        message: ''
      }
    },
    methods: {
      updateMessage (msg) {
        this.message = msg
      }
    }
  }
</script>
ログイン後にコピー

$emit メソッドを使用して子コンポーネントの sendMsg イベントをトリガーします

<script>
  export default {
    methods: {
      sendMessage () {
        this.$emit('sendMsg', 'Hello Vue!')
      }
    }
  }
</script>
ログイン後にコピー

2. 非親子コンポーネント通信

In Vueの場合 コンポーネントが親子関係でない場合、コンポーネント間の通信はVueが公式に提供するイベントバスを利用できます。

具体的な実装方法:

新しいeventBus.jsファイルを作成します

import Vue from 'vue'

export const eventBus = new Vue()
ログイン後にコピー

通信する必要があるコンポーネントで、eventBus.jsをインポートし、$emitを使用してイベントをトリガーします:

<script>
  import { eventBus } from './eventBus.js'

  export default {
    methods: {
      sendMessage () {
        eventBus.$emit('sendMsg', 'Hello Vue!')
      }
    }
  }
</script>
ログイン後にコピー

イベントの受信:

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

<script>
  import { eventBus } from './eventBus.js'

  export default {
    data () {
      return {
        message: ''
      }
    },
    created () {
      eventBus.$on('sendMsg', (msg) => {
        this.message = msg
      })
    }
  }
</script>
ログイン後にコピー

この方法では、異なるコンポーネント間の通信が可能ですが、いくつかの欠点があります。アプリケーションが非常に複雑な場合、コンポーネント間の通信リンクを追跡するのが困難です。

2. コンポーネント間の通信方式と選択

アプリケーション開発プロセスでは、開発効率とパフォーマンスを向上させるために、アプリケーションに適した通信方式を選択する必要があります。

1. 親子コンポーネントの通信

は、親子コンポーネントがデータを転送したり、操作を実行したりする必要がある状況に適しています。この方法は比較的シンプルで、保守とデバッグが簡単です。

2. 非親子コンポーネント通信

クロスレベル、兄弟コンポーネント、および他の非親子コンポーネント間で通信が必要な状況に適用されます。イベント バス方式を使用すると、コンポーネント間の通信を簡単に実装できますが、デバッグが困難になったり、複雑さが増したりする可能性があります。

3.Vuex

Vuex は、Vue が公式に提供している状態管理ライブラリで、アプリケーション内の状態 (データや操作を含む) を管理するために使用されます。大量のデータを共有する必要がある大規模プロジェクトに適しています。

Vuex を使用すると、コンポーネント間の通信を Vuex ストアに配置し、必要なコンポーネントがゲッターを通じてストア内のデータを取得したり、アクションを使用してストア内の状態変更をトリガーしたり、ストア内のデータを更新したりできます。ストアにアクセスし、他のコンポーネントに通知します。

まとめ:

Vue 開発では、コンポーネント間の通信の問題がよく発生しますが、親子コンポーネント通信、親子コンポーネント以外の通信、Vuex のステータスを状況に応じて選択できます。実際の状況を管理してください。これらの方法を適切に使用すると、アプリケーション開発の効率とパフォーマンスを向上させることができます。

以上がVue コンポーネント間で呼び出しを行う方法の詳細内容です。詳細については、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)

UseEffectとは何ですか?副作用を実行するためにどのように使用しますか? UseEffectとは何ですか?副作用を実行するためにどのように使用しますか? Mar 19, 2025 pm 03:58 PM

この記事では、functionコンポーネントでのデータフェッチやDOM操作などの副作用を管理するためのフックであるReactの使用Effectについて説明します。メモリリークなどの問題を防ぐための使用、一般的な副作用、およびクリーンアップについて説明します。

怠zyなロードの概念を説明してください。 怠zyなロードの概念を説明してください。 Mar 13, 2025 pm 07:47 PM

怠zyな読み込みは、必要になるまでコンテンツの読み込みを遅延させ、初期負荷時間とサーバーの負荷を削減することにより、Webパフォーマンスとユーザーエクスペリエンスを改善します。

React和解アルゴリズムはどのように機能しますか? React和解アルゴリズムはどのように機能しますか? Mar 18, 2025 pm 01:58 PM

この記事では、Virtual DOMツリーを比較してDOMを効率的に更新するReactの調整アルゴリズムについて説明します。パフォーマンスの利点、最適化技術、ユーザーエクスペリエンスへの影響について説明します。

JavaScriptでカリーはどのように機能し、その利点は何ですか? JavaScriptでカリーはどのように機能し、その利点は何ですか? Mar 18, 2025 pm 01:45 PM

この記事では、JavaScriptのカレーについて説明します。これは、マルチアーグメント関数を単一argument関数シーケンスに変換する手法です。 Curryingの実装、部分的なアプリケーションなどの利点、実用的な用途、コード読み取りの強化を調査します

JavaScriptの高次関数とは何ですか?また、より簡潔で再利用可能なコードを書くためにどのように使用できますか? JavaScriptの高次関数とは何ですか?また、より簡潔で再利用可能なコードを書くためにどのように使用できますか? Mar 18, 2025 pm 01:44 PM

JavaScriptの高次関数は、抽象化、共通パターン、および最適化技術を通じて、コードの簡潔さ、再利用性、モジュール性、およびパフォーマンスを強化します。

usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか? usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか? Mar 19, 2025 pm 03:59 PM

この記事では、ReactのUseContextを説明しています。これにより、小道具掘削を避けることで国家管理を簡素化します。再レンダーの削減により、集中状態やパフォーマンスの改善などの利点について説明します。

connect()を使用して、ReactコンポーネントをReduxストアにどのように接続しますか? connect()を使用して、ReactコンポーネントをReduxストアにどのように接続しますか? Mar 21, 2025 pm 06:23 PM

記事では、Connect()、MapStateToprops、MapDispatchToprops、およびパフォーマンスへの影響を説明するReduxストアに反応コンポーネントをReduxストアに接続します。

イベントハンドラーのデフォルトの動作をどのように防止しますか? イベントハンドラーのデフォルトの動作をどのように防止しますか? Mar 19, 2025 pm 04:10 PM

記事では、PreventDefault()メソッドを使用して、イベントハンドラーのデフォルト動作の防止、ユーザーエクスペリエンスの強化などの利点、およびアクセシビリティの懸念などの潜在的な問題について説明します。

See all articles