news 2026/6/10 16:13:09

Vue—— Vue3 + Node.js 后台管理系统 之 【组件通信技巧】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue—— Vue3 + Node.js 后台管理系统 之 【组件通信技巧】

背景问题

在Vue应用中,组件间通信是常见需求,但不同场景需要不同的通信方式。

方案思考

  • 如何实现跨层级通信
  • 如何使用事件总线
  • 如何处理属性透传

具体实现

跨层级通信:

// utils/componentCommunication.ts - 组件通信技巧// 1. 使用provide/inject实现跨层级通信// 父组件import{provide,ref}from'vue';exportfunctionuseParentProvider(){constsharedData=ref('shared value');provide('shared-data',sharedData);provide('update-data',(newVal:string)=>{sharedData.value=newVal;});}// 子组件(任意层级)import{inject}from'vue';exportfunctionuseChildConsumer(){constsharedData=inject('shared-data');constupdateData=inject('update-data');return{sharedData,updateData};}

事件总线:

// 2. 使用mitt实现事件总线importmittfrom'mitt';typeEvents={'user-login':{userId:string;username:string};'user-logout':void;'data-updated':any;};constemitter=mitt<Events>();// 发送事件exportfunctionemitEvent<TextendskeyofEvents>(event:T,data?:Events[T]){emitter.emit(event,data);}// 监听事件exportfunctiononEvent<TextendskeyofEvents>(event:T,handler:(data?:Events[T])=>void){emitter.on(event,handler);}// 移除监听exportfunctionoffEvent<TextendskeyofEvents>(event:T,handler:(data?:Events[T])=>void){emitter.off(event,handler);}

属性透传:

// 3. 使用useAttrs和useSlots处理透传import{useAttrs,useSlots}from'vue';exportfunctionuseForwardProps(){constattrs=useAttrs();constslots=useSlots();return{forwardedAttrs:attrs,hasDefaultSlot:!!slots.default,hasNamedSlot:(name:string)=>!!slots[name]};}

效果验证

通过不同的通信方式,可以灵活处理各种组件间通信需求。

经验总结

选择合适的通信方式很重要,避免过度依赖某一种方式,要根据具体场景选择最优方案。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 13:03:42

3个革新性方法:智能知识管理让研究者效率提升300%

3个革新性方法&#xff1a;智能知识管理让研究者效率提升300% 【免费下载链接】zotero-style zotero-style - 一个 Zotero 插件&#xff0c;提供了一系列功能来增强 Zotero 的用户体验&#xff0c;如阅读进度可视化和标签管理&#xff0c;适合研究人员和学者。 项目地址: htt…

作者头像 李华
网站建设 2026/6/10 11:41:13

解决游戏控制器识别难题的ViGEmBus虚拟设备驱动

解决游戏控制器识别难题的ViGEmBus虚拟设备驱动 【免费下载链接】ViGEmBus 项目地址: https://gitcode.com/gh_mirrors/vig/ViGEmBus 当你准备在Windows系统上畅玩游戏时&#xff0c;却发现心爱的游戏控制器无法被识别——这种情况是否让你倍感沮丧&#xff1f;无论是老…

作者头像 李华
网站建设 2026/6/1 10:48:44

QzoneArchiver:构建个人数字记忆库的QQ空间数据全量备份方案

QzoneArchiver&#xff1a;构建个人数字记忆库的QQ空间数据全量备份方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 引言 在数字时代&#xff0c;个人社交数据已成为记录生活轨迹的…

作者头像 李华
网站建设 2026/6/10 13:42:45

3步解锁Steam模组自由:写给跨平台玩家的WorkshopDL实战手册

3步解锁Steam模组自由&#xff1a;写给跨平台玩家的WorkshopDL实战手册 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 对于许多游戏玩家来说&#xff0c;Steam创意工坊下载一直…

作者头像 李华