vue 任意组件间的通信方式

  1. 全局事件总线:
// main.js 
// 1.安装全局事件总线,$bus就是当前   应用的vm
new Vue({
 render: h => h(App),
 beforeCreate(){
   Vue.prototype.$bus=this  
 }
}).$mount('#app')

// 2.使用事件总线:
// 组件一:
 methods:{
    handleLink(){
      this.$bus.$emit('hello',666)
    }
  }
// 组件二:
  mounted() {
    this.$bus.$on("hello", (data) => {
      console.log("我接受到school组件的传值" + data);
    });
  },
  // 3.解绑当前组件所用到的事件
  beforeDestroy() {
    this.$bus.$off("hello");  
  },
  1. 消息订阅与发布(pubsub-js )
// 1.安装
npm i pubsub-js  
// 2. 引入
import pubsub from 'pubsub-js' 
//消息订阅
this.pubId=pubsub.subcribe('事件名',(a,b)=>{
console.log(b)
})  
//消息发布
pubsub.publish('事件名',传递参数)  
// 销毁事件
beforeDestroy() {
  this.$bus.$off("hello");
  pubsub.unsubscribe(this.pubId)
},
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值