Loading

Vue - 全局事件总线

全局事件总线

一种组件间的通信方式,适用于任意组件间通信。

使用方式

1.安装全局事件总线

new Vue({
  render: h => h(App),
  beforeCreate() {
    Vue.prototype.$bus = this
  }
}).$mount('#app')

2.使用事件总线
接收数据:A组件想接收数据,则在A组件中给$bus绑定自定义事件,事件的回调留在A组件身上。

<template>
  <div>
    <h2>{{receiveName}}</h2>
  </div>
</template>

<script>
export default {
  name: "School",
  data(){
    return{
      receiveName:""
    }
  },
  methods:{
    rec(name){
      console.log("准备接收数据");
      console.log("接收到学生姓名"+name);
      this.receiveName = name
    }
  },
  mounted() {
    this.$bus.$on("receive",this.rec)
  }
}
</script>

提供数据:this.$bus.$emit('自定义事件名',数据)

<template>
  <div>
    <button @click="sendName">发送学生信息给学校</button>
  </div>
</template>

<script>
export default {
  name: "Student",
  data(){
    return{
      name:"张三"
    }
  },
  methods:{
    sendName(){
      this.$bus.$emit("receive",this.name)
    }
  }
}
</script>

最好在beforeDestory钩子中,用$off去解绑当前组件所用到的事件。

posted @ 2021-10-13 20:02  IamHzc  阅读(290)  评论(1编辑  收藏  举报