Vue.jsにおいて、$emit
と$on
はお互いに関連するメソッドですが、それぞれ異なる役割を果たします。
$emit
は、Vue.jsのコンポーネントでカスタムイベントを発行するために使用されます。コンポーネント内で$emit
を呼び出すと、そのイベントが発行され、親コンポーネントや同じ階層の他のコンポーネントがそのイベントを聞くことができます。
一方、$on
はイベントリスナーを追加するために使用されます。コンポーネント内で$on
を使用して特定のイベントにリスナーを追加すると、そのイベントが発行された時にリスナーが呼び出されます。
以下は、$emit
と$on
の基本的な使用例です。
// 子コンポーネント
Vue.component('child-component', {
template: '<button @click="sendMessage">Click me!</button>',
methods: {
sendMessage: function() {
this.$emit('message', 'Hello from child component!');
}
}
});
// 親コンポーネント
new Vue({
el: '#app',
data: {
messageFromChild: ''
},
template: '<div><child-component></child-component><p>{{ messageFromChild }}</p></div>',
created() {
// 子コンポーネントからのメッセージを受け取るリスナーを追加
this.$on('message', message => {
this.messageFromChild = message;
});
}
});
この例では、親コンポーネントが$on
を使用して、子コンポーネントからのmessage
イベントを監視し、そのイベントが発行されたときにmessageFromChild
データを更新します。
つまり、$emit
はイベントを発行し、$on
はそのイベントをリッスンします。これにより、コンポーネント間での通信が実現されます。
コメント