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 11:43:28

想保存无水印视频却不会技术?这款免费工具3步轻松搞定!

想保存无水印视频却不会技术&#xff1f;这款免费工具3步轻松搞定&#xff01; 【免费下载链接】XHS-Downloader 免费&#xff1b;轻量&#xff1b;开源&#xff0c;基于 AIOHTTP 模块实现的小红书图文/视频作品采集工具 项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Do…

作者头像 李华
网站建设 2026/6/9 20:06:52

3步实现高效智能的系统镜像烧录

3步实现高效智能的系统镜像烧录 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher 你是否曾因制作启动盘而浪费数小时&#xff1f;面对复杂的工具界面和晦涩的技术术…

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

30天从零搭建家庭游戏串流服务器:Sunshine全场景实战指南

30天从零搭建家庭游戏串流服务器&#xff1a;Sunshine全场景实战指南 【免费下载链接】Sunshine Sunshine: Sunshine是一个自托管的游戏流媒体服务器&#xff0c;支持通过Moonlight在各种设备上进行低延迟的游戏串流。 项目地址: https://gitcode.com/GitHub_Trending/su/Sun…

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

第六章:高级查询技术 (DQL) —— 驾驭复杂数据的艺术

核心摘要&#xff1a; 如果说基础查询是“捡起地上的苹果”&#xff0c;那么高级查询就是“设计一套自动化收割系统”。 本章是 SQL 学习的分水岭。我们将深入研究聚合统计的底层差异&#xff08;COUNT(*) 到底慢不慢&#xff1f;&#xff09;、分组陷阱&#xff08;ONLY_FULL_…

作者头像 李华