Vue.jsの$emit
は、Vue.jsのイベントバスを使ってカスタムイベントを発行するための機能の一部です。
Vue.jsのイベントバスは、Vue.jsアプリケーション内のコンポーネント間で通信するためのメカニズムです。イベントバスを使用すると、親コンポーネントと子コンポーネント、または異なるコンポーネント間でデータを受け渡すことができます。
$emit
は、親コンポーネントから子コンポーネントへのデータの受け渡しや、子コンポーネントから親コンポーネントへのイベント通知など、コンポーネント間での情報のやり取りを可能にします。これにより、コンポーネントの疎結合性が高まり、再利用性と保守性が向上します。
以下は、$emit
を使用してイベントを発行する基本的な例です。
// 子コンポーネント
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 @message="handleMessage"></child-component><p>{{ messageFromChild }}</p></div>',
methods: {
handleMessage: function(message) {
this.messageFromChild = message;
}
}
});
この例では、子コンポーネントがボタンをクリックすると、$emit
メソッドを使用してmessage
というカスタムイベントを発行し、そのイベントに「Hello from child component!」というメッセージを含めます。親コンポーネントは、子コンポーネントからのmessage
イベントを受け取り、handleMessage
メソッドでメッセージを処理して画面に表示します。
これにより、子コンポーネントと親コンポーネント間でのデータの受け渡しが実現されます。
コメント