25-非父子通信 - event bus 事件总线

作用:非父子组件之间,进行简易消息传递。(复杂场景 -> Vuex)

1.创建一个都能访问到的事件总线(空 Vue 实例) -> utils/EventBus.js

javascript 复制代码
import Vue from 'vue'
const Bus = new Vue()
export default Bus

2. A组件(接收方),监听 Bus实例 的事件(支持多个组件同时监听)

javascript 复制代码
created () {
    Bus.$on('sendMsg',(msg) => {
        this.msg = msg
    })
}

3. B组件(发送方),触发 Bus实例 的事件

javascript 复制代码
Bus.$emit('sendMsg', '这是一个消息')

代码示例:

(1). src / utils / EventBus.js 创建事件总线

javascript 复制代码
// 1.创建一个都能访问到的事件总线 (空的 Vue 实例)
import Vue from 'vue'

const Bus = new Vue()

export default Bus

(2). 创建发送者和接受者组件

(3). App.vue 引入渲染

html 复制代码
<template>
  <div id="app">
    <BaseA></BaseA>
    <BaseB></BaseB>
  </div>
</template>

<script>

import BaseA from './components/BaseA.vue'
import BaseB from './components/BaseB.vue'


export default {

  components: {
   BaseA,
   BaseB
    
  }

}

</script>
<style></style>
相关推荐
清风ai明月2 小时前
vue模板语法中使用冒号: 什么时候使用,什么时候不使用呢?
前端·javascript·vue.js
少卿2 小时前
uniapp run使用指南 - VSCode 开发 Uni-app 项目
前端·vue.js
剑亦未配妥2 小时前
Vue2函数式组件实战:手写可调用的动态组件,适用于toast轻提示、tip提示、dialog弹窗等
前端·vue.js·vue
zoahxmy09292 小时前
Vue3 视频播放与截图功能实现
javascript·vue.js
waylon111132 小时前
【HOC】高阶组件在Vue老项目中的实战应用 - 模块任意排序
前端·vue.js·面试
DJA_CR2 小时前
解决在 TSX 中使用 `RouterView` + `KeepAlive` 不生效问题
前端·vue.js
小旋风012342 小时前
封装可拖动弹窗(vue jquery引入到html的版本)
vue.js·html·jquery
gongzemin3 小时前
React 和 Vue3 在事件传递的区别
前端·vue.js·react.js
麦麦大数据3 小时前
neo4j+django+deepseek知识图谱学习系统对接前后端分离前端vue
vue.js·django·知识图谱·neo4j·deepseek·在线学习系统
三翼鸟数字化技术团队5 小时前
Vue自定义指令最佳实践教程
前端·vue.js