Vue组件间通信

Vue组件间通信

组件关系组件间传值方法一组件间传值方法二组件间传值方法三组件间传值方法四
父传子props传值全局事件总线(行但没必要)消息订阅与发布(行但没必要)vuex
子传父子组件调用props传的回调函数自定义事件全局事件总线(行但没必要)vuex
祖孙间传值全局事件总线消息订阅与发布(行但没必要)vuex(欢迎补充)
  • 全局事件总线本质上就是自定义事件 是任意组件之间都可以通信的(这个更好一点因为完全是Vue的 完全利用了Vue自定义事件还不用引入库)

  • 消息订阅与发布也是任意组件之间都可以通信的

消息订阅需要下载库 库可以选择pubsub-js需要 npm i pubsub-js

然后在代码中引入

import pubsub from 'pubsub-js'

其中pubsub是一个对象,

使用:

1、订阅消息:

pubsub.subscribe('消息名'回调函数)

这样就订阅消息成功,等人发布消息

2、发布消息:

pubsub.publish('消息名',传递的数据)

3、消息需要取消订阅

pubsub.unsubscribe(订阅的id)

举例:

//发布消息
pubsub.publish('hello',data);
//订阅消息 可放在mounted()钩子里面
this.pubId = pubsub.subscribe('hello',function(msgName,data){
    函数体
    //这个回调函数里面的this是undefined
    this === undefined //true
})
this.pubId = pubsub.subscribe('hello',(msgName,data)=>{
    函数体
    //这个回调函数里面的this是VueComponent组件
})

demo((msgName,data){函数体}
this.pubId = pubsub.subscribe('hello',this.demo)//demo函数写在methods里面 这样this也是VueComponent
//取消订阅 可放在beforeDestory()钩子里面
pubsub.unsubscribe(pubId)

个人记录学习使用,转载请联系我先,如有错误,欢迎指正呀

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值