ホームページ  >  記事  >  ウェブフロントエンド  >  vue でeventBus を使用して同じレベルのコンポーネント間の通信を実現する方法

vue でeventBus を使用して同じレベルのコンポーネント間の通信を実現する方法

亚连
亚连オリジナル
2018-06-02 09:23:361720ブラウズ

この記事では、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: &#39;<p>{{val}} <button @click="click">click</button></p>&#39;,
  data() {
   return {
    val: 0
   }
  },
  created() {
   //为one绑定事件,如果two_click事件发生了,则执行回调函数
   eventBus.$on(&#39;two_click&#39;,
    (val) => {
     // 这个this 指的是one的vue实例
     this.val = val
    }
   )
  },
  methods: {
   click() {
    // 如果one被点击了,则发送一个one_click的事件,并传递一个参数
    eventBus.$emit(&#39;one_click&#39;, 11)
   }
  }
 }
 let two = {
  template: &#39;<p>{{val}} <button @click="click">click</button></p>&#39;,
  data() {
   return {
    val: 0
   }
  },
  created() {
   eventBus.$on(&#39;one_click&#39;,
    (val) => {
     this.val = val
    })
  },
  methods: {
   click() {
    eventBus.$emit(&#39;two_click&#39;, 22)
   }
  }
 }
 new Vue({
  el: &#39;#app&#39;,
  components: {
   one,
   two
  }
 })
</script>
</html>

。上記は私が皆さんのためにまとめたものです。はい、将来皆さんのお役に立てれば幸いです。

関連記事:

Reactコンポーネントプロジェクト(詳細チュートリアル)

Vueコンポーネント開発スキルについて(詳細チュートリアル)

コードサンプルによるJavaScriptモジュールローダーの詳細な説明

以上がvue でeventBus を使用して同じレベルのコンポーネント間の通信を実現する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。