Vue全局事件总线(任意组件间通信)

举报
生产的的驴 发表于 2023/11/29 15:46:53 2023/11/29
【摘要】 建议使用这种方便快捷Vue 消息订阅与发布 (任意组件间通信) 父传子使用使用props全局事件总线比较适用于 子 传递 父亲 安装全局事件总线new Vue({ render: h => h(App), beforeCreate() { Vue.prototype.$bus = this //挂载到VC }}).$mount('#app')beforeCreate 生...

建议使用这种方便快捷
Vue 消息订阅与发布 (任意组件间通信)

父传子使用

使用props


全局事件总线比较适用于 子 传递 父亲

安装全局事件总线

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

beforeCreate 生命周期:无法通过VM访问data数据 和 methods 方法 生命周期的第一个函数

定义事件总线

$emit:定义
$on:接收使用

发送者:

  <button @click="snedData()">登录传递用户名</button>
 snedData() { this.$bus.$emit('send', 666, 'dpc')  }      

调用事件总线

$on:接收使用

接收者:

created() { this.getData() },

    methods:
    {
        getData() {
            this.$bus.$on('send', (data, str) =>
            {
                console.log(data, str)
            })
        }
    },    

销毁事件总线

使用完后销毁,不妨碍其他组件的使用

beforeDestroy:销毁之前

beforeDestroy() {
        this.$bus.$off('send')
    }
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。