Vue コンポーネントの通信: データ転送にイベント リスナーを使用する
Vue 開発では、コンポーネント間の通信が一般的な問題になります。 Vue は、さまざまなオプションの通信方法を提供します。一般的に使用される方法の 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!
を受け取り、ページに表示します。
親コンポーネントが子コンポーネントのイベントをリッスンすることに加えて、子コンポーネントは $ を通じて親コンポーネントをリッスンすることもできます。 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 サイトの他の関連記事を参照してください。