Vue コンポーネント通信: データ転送にイベント リスナーを使用する

王林
リリース: 2023-07-07 12:10:02
オリジナル
1545 人が閲覧しました

Vue コンポーネントの通信: データ転送にイベント リスナーを使用する

Vue 開発では、コンポーネント間の通信が一般的な問題になります。 Vue は、さまざまなオプションの通信方法を提供します。一般的に使用される方法の 1 つは、データ転送にイベント リスナーを使用することです。この記事では、コンポーネント通信にイベント リスナーを使用する方法と、対応するコード例を紹介します。

  1. 親コンポーネントは子コンポーネントのイベントをリッスンします

Vue では、子コンポーネントは $emit メソッドを通じてカスタム イベントをトリガーし、それを渡すことができます。パラメータはデータ転送を実装します。親コンポーネントは、v-on ディレクティブを通じて子コンポーネントのイベントをリッスンし、コールバック関数で渡されたデータを取得できます。

次の例では、親コンポーネント ParentComponent と子コンポーネント ChildComponent を作成します。子コンポーネントにボタンが定義されており、ボタンがクリックされると、childEvent という名前のカスタム イベントがトリガーされ、パラメーター message が渡されます。親コンポーネントは、v-on 命令を通じて子コンポーネントの childEvent イベントをリッスンし、コールバック関数で渡されたパラメーターを取得します。

<template>
  <div>
    <child-component v-on:childEvent="handleChildEvent"></child-component>
    <p>从子组件接收到的数据:{{ receivedData }}</p>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      receivedData: ''
    };
  },
  methods: {
    handleChildEvent(data) {
      this.receivedData = data;
    }
  }
};
</script>
ログイン後にコピー
<template>
  <div>
    <button @click="triggerEvent">触发事件</button>
  </div>
</template>

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

子コンポーネントのボタンがクリックされると、親コンポーネントは渡されたパラメータ Hello, Vue! を受け取り、ページに表示します。

  1. 子コンポーネントは親コンポーネントのイベントをリッスンします

親コンポーネントが子コンポーネントのイベントをリッスンすることに加えて、子コンポーネントは $ を通じて親コンポーネントをリッスンすることもできます。 on メソッド トリガーされたイベント。この方法は、子コンポーネントが親コンポーネント データをアクティブに取得する必要があるシナリオに適しています。

次の例では、親コンポーネントが初期化中に parentEvent イベントをトリガーし、パラメーター data を渡すように、前のコードを変更しました。子コンポーネントは、$on メソッドを通じて親コンポーネントの parentEvent イベントをリッスンし、コールバック関数で渡されたデータを取得します。

<!-- 父组件 -->
<template>
  <div>
    <child-component></child-component>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent
  },
  mounted() {
    this.$emit('parentEvent', 'Hello, Vue!');
  }
};
</script>
ログイン後にコピー
<!-- 子组件 -->
<template>
  <div>
    <p>从父组件接收到的数据:{{ receivedData }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      receivedData: ''
    };
  },
  mounted() {
    this.$parent.$on('parentEvent', this.handleParentEvent);
  },
  methods: {
    handleParentEvent(data) {
      this.receivedData = data;
    }
  }
};
</script>
ログイン後にコピー

この例では、親コンポーネントは mounted フックで parentEvent イベントをトリガーし、パラメーター Hello, Vue! を渡します。子コンポーネントは、$on メソッドを通じて親コンポーネントの parentEvent イベントをリッスンし、コールバック関数で渡されたデータを取得します。

上記の 2 つの方法により、Vue コンポーネントで柔軟な通信を実現でき、コンポーネントが相互にデータを転送して対話できるようになります。特定のビジネス シナリオに基づいてコンポーネント通信に適切な方法を選択し、コードの編成と保守性を向上させることができます。

概要:

この記事では、コンポーネント通信にイベント リスナーを使用する方法を紹介し、対応するコード例を示します。親コンポーネントが子コンポーネント イベントをリッスンするか、子コンポーネントが親コンポーネント イベントをリッスンするかにかかわらず、これらは Vue の一般的なコンポーネント通信メソッドです。このようにして、柔軟なデータ転送とコンポーネントの対話を実現でき、Vue 開発の可能性が高まります。

以上がVue コンポーネント通信: データ転送にイベント リスナーを使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート