当前位置: 首页 > news >正文

学习Vue:Event Bus 与 Provide/Inject

在Vue.js中,兄弟组件通信是指两个没有直接父子关系的组件之间如何进行数据传递和通信。为了实现兄弟组件通信,我们可以借助Vue的一些特性,如Event Bus和Provide/Inject。让我们一起来深入了解这些方法,并通过实例来看看如何实现兄弟组件通信。

Event Bus:事件总线

Event Bus是一个空的Vue实例,用于组件之间的事件通信。我们可以在该实例上触发和监听事件,从而实现兄弟组件之间的通信。

创建事件总线

// EventBus.js
import Vue from 'vue';
export const EventBus = new Vue();

兄弟组件A:发送事件

<template><button @click="sendData">发送数据到B组件</button>
</template><script>
import { EventBus } from './EventBus';export default {methods: {sendData() {EventBus.$emit('data-sent', 'Hello from A!');}}
};
</script>

兄弟组件B:接收事件

<template><div><p>从A组件接收到的数据:{{ receivedData }}</p></div>
</template><script>
import { EventBus } from './EventBus';export default {data() {return {receivedData: ''};},created() {EventBus.$on('data-sent', data => {this.receivedData = data;});}
};
</script>

Provide/Inject:提供与注入

Provide/Inject是一种高级的组件通信方式,它允许父组件向子孙组件传递数据。

父组件:提供数据

<template><div><ChildA /></div>
</template><script>
export default {provide: {sharedData: 'Hello from Parent!'}
};
</script>

子组件A:注入数据

<template><div><p>从父组件注入的数据:{{ sharedData }}</p></div>
</template><script>
export default {inject: ['sharedData']
};
</script>

子组件B:同样可以注入数据

<template><div><p>从父组件注入的数据:{{ sharedData }}</p></div>
</template><script>
export default {inject: ['sharedData']
};
</script>

兄弟组件通信在Vue.js中可以通过Event Bus和Provide/Inject来实现。Event Bus是一个事件总线,可以让兄弟组件之间通过触发和监听事件进行通信。而Provide/Inject则允许父组件向子孙组件传递数据。了解这些通信方式将帮助您在不同场景中更好地进行组件之间的数据传递和通信。通过合理地选择合适的通信方式,您可以更好地构建出结构清晰、逻辑合理的Vue应用程序。

http://www.lryc.cn/news/126068.html

相关文章:

  • Java 工具类之JSON key根据ASCII排序
  • 深兰科技提出新多模态谣言监测模型,刷新世界纪录
  • 【从零学习python 】33.装饰器的作用(二)
  • 【自动电压调节器】无功功率控制的终端电压控制研究(Simulink)
  • 比ChatGPT更强的星火大模型V2版本发布!
  • Character Animation With Direct3D 读书笔记
  • SpringBoot之HandlerInterceptor拦截器的使用
  • 【共同缔造 情暖襄阳】 暑期关爱未成年人志愿服务活动合集(三)
  • 私密相册管家-加密码保护私人相册照片安全
  • webpack 热更新的实现原理
  • OpenCV-Python中的图像处理-傅里叶变换
  • 阿里云FRP内网穿透挂载多台服务器
  • 多店铺功能
  • mysql主从复制搭建(一主一从)
  • 什么是Liquid UI?
  • 非常详细的相机标定(六)(2维坐标点转为3维坐标点)
  • 云计算虚拟仿真实训平台
  • 计算机网络:网络字节序
  • 2023国赛数学建模A题思路分析
  • 【Java】常见面试题:网络
  • TTS | VocGAN声码器训练自己的数据集
  • nuxt3--prisma配置
  • 学习ts(一)数据类型(基础类型和任意类型)
  • Qt 之 QPushButton,信号与槽机制
  • MySQL面试题一
  • 【Java】2021 RoboCom 机器人开发者大赛-高职组(复赛)题解
  • 使用electron-vue获取文件夹的路径
  • 剑指Offer14-II.剪绳子II C++
  • 2023企业微信0day漏洞复现以及处理意见
  • 【IMX6ULL驱动开发学习】04.应用程序和驱动程序数据传输和交互的4种方式:非阻塞、阻塞、POLL、异步通知