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 @   IamHzc  阅读(292)  评论(1编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示
主题色彩