この記事では、vue が同じレベルのコンポーネント間の通信を実現するためにどのように EventBus を使用するかを主に紹介します
スケジュールイベントをバインドして送信するための新しい vue インスタンスを作成します
これにより、同じレベルのコンポーネントが次のことを行うことができます。最初のコンポーネントをクリックすると、2 番目のコンポーネントのラベル値が変更されます
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script src="vue.js"></script> </head> <body> <p id="app"> <one></one> <two></two> </p> </body> <script> // 使用一个vue实例 作为事件的载体,用于绑定事件和处理发送事件,作为调度中心 let eventBus = new Vue() let one = { template: '<p>{{val}} <button @click="click">click</button></p>', data() { return { val: 0 } }, created() { //为one绑定事件,如果two_click事件发生了,则执行回调函数 eventBus.$on('two_click', (val) => { // 这个this 指的是one的vue实例 this.val = val } ) }, methods: { click() { // 如果one被点击了,则发送一个one_click的事件,并传递一个参数 eventBus.$emit('one_click', 11) } } } let two = { template: '<p>{{val}} <button @click="click">click</button></p>', data() { return { val: 0 } }, created() { eventBus.$on('one_click', (val) => { this.val = val }) }, methods: { click() { eventBus.$emit('two_click', 22) } } } new Vue({ el: '#app', components: { one, two } }) </script> </html>
関連記事:
Reactコンポーネントプロジェクト(詳細チュートリアル)Vueコンポーネント開発スキルについて(詳細チュートリアル)
コードサンプルによるJavaScriptモジュールローダーの詳細な説明
以上がvue でeventBus を使用して同じレベルのコンポーネント間の通信を実現する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。