ホームページ ウェブフロントエンド Vue.js Vue2.x でコンポーネント通信を実装するための完全なガイド (props、$emit、Vuex)

Vue2.x でコンポーネント通信を実装するための完全なガイド (props、$emit、Vuex)

Jun 09, 2023 pm 04:06 PM
vuex コンポーネント通信

Vue2.x コンポーネント通信実装の完全ガイド (props、$emit、Vuex)

Vue は、最新の JavaScript フレームワークとして、Web アプリケーションの開発時に非常に人気があります。 Vue のコンポーネント化されたアーキテクチャにより、開発者はコードと機能を簡単に分離できると同時に、さまざまなコンポーネントを介した柔軟な通信が可能になります。

この記事では、Vue アプリケーションを構築するときにリソースをより適切に管理できるように、Vue2.x でのコンポーネント通信の 3 つの方法 (props、$emit、Vuex) について説明します。

Props

props は、Vue のコンポーネント パラメーター受け渡しメソッドの 1 つです。 props を使用して子コンポーネントに値を渡すことができます。子コンポーネントでは、props の値は読み取り専用です。つまり、変更できません。これにより、一方向のデータの流れが可能になり、Vue アプリケーションの保守とデバッグが容易になります。

これは例です:

親コンポーネントで、「parent」という名前のプロップを作成し、それに「message」という名前のプロップを渡すことができます。

<template>
  <div>
    <child :message="msg"></child>
  </div>
</template>

<script>
import Child from "./Child.vue";

export default {
  name: "Parent",
  components: {
    Child
  },
  data() {
    return {
      msg: "Hello World!"
    };
  }
};
</script>
ログイン後にコピー

子コンポーネントでは、渡された props 値を受け取り、それをテンプレートで使用できます。

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

<script>
export default {
  name: "Child",
  props: {
    message: {
      type: String,
      required: true
    }
  }
};
</script>
ログイン後にコピー

この例では、「msg」は親コンポーネントで定義され、「message」は props の名前です。これは親コンポーネントの値と一致する必要があります。子コンポーネントは、「props」オプションを使用して、props のデータ型と渡す必要がある値を定義する必要があります。

これは、小道具を通過するデータの基本的な例です。渡す必要がある props が複数ある場合は、それらをオブジェクトに入れて子コンポーネントに渡すことができます。

$emit

$emit は、Vue で広く使用されているもう 1 つのコンポーネント通信メソッドです。 $emit を使用してカスタム イベントをトリガーし、データを親コンポーネントに渡すことができます。 props とは異なり、$emit は双方向のデータ転送を実現できるため、Vue アプリケーションのコンポーネント間のリソース共有がより便利になります。

props とは異なり、$emit は子コンポーネントから親コンポーネントにデータを渡すことができます。以下に例を示します。

この例では、カスタム イベント名「greeting」を定義し、ボタンがクリックされたときにイベントを起動します。選択したアイテムもイベントに渡します。

<template>
  <div>
    <button @click="sayHi()">Click me</button>
  </div>
</template>

<script>
export default {
  name: "Child",
  methods: {
    sayHi() {
      this.$emit("greeting", {
        message: "Hello World!"
      });
    }
  }
};
</script>
ログイン後にコピー

親コンポーネントでは、子コンポーネントのカスタム イベントをリッスンし、イベントの発生時に渡されたデータを使用できます。

<template>
  <div>
    <child @greeting="handleGreeting"></child>
    <div>{{ greeting }}</div>
  </div>
</template>

<script>
import Child from "./Child.vue";

export default {
  name: "Parent",
  components: {
    Child
  },
  data() {
    return {
      greeting: ""
    };
  },
  methods: {
    handleGreeting(data) {
      this.greeting = data.message;
    }
  }
};
</script>
ログイン後にコピー

この例では、「handleGreeting」がイベントの処理に使用されるメソッドです。このメソッドは、子コンポーネントによってトリガーされたカスタム イベントをパラメーターとして受け取ります。データ転送は、子コンポーネントの $emit イベントから取得できます。

Vuex

Vuex は、Vue.js アプリケーションの状態管理ライブラリです。これにより、コンポーネントが状態を共有できるようになり、コンポーネント間の通信がより簡単かつ効率的になります。

これは例です:

この例では、「store」という名前の Vuex ストアを作成してデータを共有します。 state 属性では、共有する必要があるデータを定義できます。 mutations 属性では、ストア内のデータを変更するための関数を定義できます。 getter 属性では、データを処理して共有値を返す関数を定義できます。

import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    greeting: "Hello World!"
  },
  mutations: {
    changeGreeting(state, payload) {
      state.greeting = payload.greeting;
    }
  },
  getters: {
    getGreeting(state) {
      return state.greeting;
    }
  }
});
ログイン後にコピー

ストア内のデータと関数は、どの Vue コンポーネントでも使用できます。この例では、2 つのボタンが設定されています。 「挨拶」ボタンをクリックすると、ストア内の「挨拶」属性の値が表示されます。 「挨拶の変更」ボタンは、コミット関数を通じてミューテーション属性で定義した関数を呼び出すことにより、ストア内の「挨拶」の値を変更します。

<template>
  <div>
    <div>{{ greeting }}</div>
    <button @click="getGreeting">greeting</button>
    <button @click="changeGreeting">change greeting</button>
  </div>
</template>

<script>
import { mapGetters, mapMutations } from "vuex";

export default {
  name: "Child",
  computed: {
    ...mapGetters(["getGreeting"])
  },
  methods: {
    ...mapMutations(["changeGreeting"]),
    getGreeting() {
      alert(this.getGreeting);
    }
  }
};
</script>
ログイン後にコピー

この例では、「mapGetters」と「mapMutations」を使用して、ストア内のデータと関数をコンポーネントの計算されたプロパティとメソッドにマップできます。このメソッドでは、alert を使用してストア内の「greeting」属性の値を表示します。 「挨拶の変更」ボタンをクリックすると、changeGreeting 関数が呼び出され、ストアの「挨拶」属性が変更されます。

概要

上記は、Vue2.x でコンポーネント通信を実装する 3 つのメソッド、props、$emit、Vuex です。実際の開発では、さまざまなニーズやシナリオに基づいて使用する通信方法を選択できます。

props を介して、コンポーネント間のデータ フローを確実に明確にするために、一方向のデータ送信を実現できます。$emit は、コンポーネント間の双方向のデータ送信を実行できるため、コンポーネント間のリソースがVue アプリケーションの共有がより便利になり、Vuex を使用するとパブリック データをストアに保存できるため、コンポーネント間の通信がより簡単かつ効率的になります。

以上がVue2.x でコンポーネント通信を実装するための完全なガイド (props、$emit、Vuex)の詳細内容です。詳細については、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 アプリケーションで vuex を使用するときに「エラー: [vuex] 変更ハンドラーの外で vuex ストアの状態を変更しません。」という問題を解決するにはどうすればよいですか? Vue アプリケーションで vuex を使用するときに「エラー: [vuex] 変更ハンドラーの外で vuex ストアの状態を変更しません。」という問題を解決するにはどうすればよいですか? Jun 24, 2023 pm 07:04 PM

Vue アプリケーションでは、vuex の使用が一般的な状態管理方法です。ただし、vuex を使用すると、「Error:[vuex]donotmutatevuexstorestateoutsidemutationhandlers」というエラー メッセージが表示されることがあります。このエラー メッセージは何を意味しますか?このエラー メッセージが表示されるのはなぜですか?このエラーを修正するにはどうすればよいですか?この記事では、この問題について詳しく説明します。エラーメッセージには次の内容が含まれます

Vue と Vue-Router: コンポーネント間でデータを共有するにはどうすればよいですか? Vue と Vue-Router: コンポーネント間でデータを共有するにはどうすればよいですか? Dec 17, 2023 am 09:17 AM

Vue と Vue-Router: コンポーネント間でデータを共有するにはどうすればよいですか?はじめに: Vue は、ユーザー インターフェイスを構築するための人気のある JavaScript フレームワークです。 Vue-Router は Vue の公式ルーティング マネージャーであり、シングルページ アプリケーションの実装に使用されます。 Vue アプリケーションでは、コンポーネントはユーザー インターフェイスを構築するための基本単位です。多くの場合、異なるコンポーネント間でデータを共有する必要があります。この記事では、Vue と Vue-Router でデータ共有を実現するのに役立ついくつかの方法を紹介します。

Vuex を使用して Vue2.x のグローバル状態を管理するためのベスト プラクティス Vuex を使用して Vue2.x のグローバル状態を管理するためのベスト プラクティス Jun 09, 2023 pm 04:07 PM

Vue2.x は現在最も人気のあるフロントエンド フレームワークの 1 つであり、グローバル状態を管理するためのソリューションとして Vuex を提供します。 Vuex を使用すると、状態管理がより明確になり、保守が容易になります。開発者が Vuex をより適切に使用し、コードの品質を向上させるために、Vuex のベスト プラクティスを以下に紹介します。 1. モジュラー組織状態の使用 Vuex は単一の状態ツリーを使用してアプリケーションのすべての状態を管理し、コンポーネントから状態を抽出することで、状態管理をより明確かつ理解しやすくします。多くの状態を持つアプリケーションではモジュールを使用する必要があります

Vue アプリケーションで vuex を使用するときに「エラー: [vuex] 不明なアクション タイプ: xxx」という問題を解決するにはどうすればよいですか? Vue アプリケーションで vuex を使用するときに「エラー: [vuex] 不明なアクション タイプ: xxx」という問題を解決するにはどうすればよいですか? Jun 25, 2023 pm 12:09 PM

Vue.js プロジェクトでは、vuex は非常に便利な状態管理ツールです。これは、複数のコンポーネント間で状態を共有するのに役立ち、状態の変更を管理する信頼性の高い方法を提供します。ただし、vuex を使用すると、「エラー:[vuex]unknownact​​iontype:xxx」というエラーが発生することがあります。この記事では、このエラーの原因と解決策について説明します。 1. エラーの原因 vuex を使用する場合、いくつかのアクションと mu を定義する必要があります。

Vue3 で Vuex を使用する方法 Vue3 で Vuex を使用する方法 May 14, 2023 pm 08:28 PM

Vuexは何をするのですか? Vue 公式: 状態管理ツール 状態管理とは? 複数のコンポーネント間で共有する必要があり、1 つの変更ですべてが変更される、応答性の高い状態。たとえば、グローバルに使用されるステータス情報: ユーザーのログイン ステータス、ユーザー名、地理的位置情報、ショッピング カート内の商品など。現時点では、グローバル ステータス管理のためのこのようなツールが必要であり、Vuex はそのようなツールです。単一ページの状態管理 ビュー –> アクション –> 状態 ビュー レイヤ (ビュー) は、アクション (アクション) をトリガーして状態 (state) を変更し、ビュー レイヤ (ビュー) vuex (Vue3.

Vue コンポーネント通信: コンポーネント通信にコールバック関数を使用する Vue コンポーネント通信: コンポーネント通信にコールバック関数を使用する Jul 09, 2023 pm 07:42 PM

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

vue3 コンポーネント間で通信するにはどうすればよいですか?コミュニケーション方法の簡単な分析 vue3 コンポーネント間で通信するにはどうすればよいですか?コミュニケーション方法の簡単な分析 Apr 21, 2023 pm 07:53 PM

vue3 を作成するプロジェクトでは、すべてのコンポーネントと通信します。pinia パブリック データ ソースの使用に加えて、どのような簡単な API メソッドを使用できますか?次に、親子コンポーネント間および子親コンポーネント間で通信するいくつかの方法を紹介します。

vuex の実装原則について詳しく見る vuex の実装原則について詳しく見る Mar 20, 2023 pm 06:14 PM

面接でvuexの実装原理について聞かれたらどう答えるべきでしょうか? vuex の実装原理については以下の記事で詳しく解説していますので、お役に立てれば幸いです。

See all articles