网站首页 > 博客文章 正文
最近在开发 Vue3 项目时偶然发现了一个技巧:组件的事件往下传可以进行叠加!,感觉对大家的开发肯定有帮助,能节省很多代码量!!!我会通过一个小案例来跟大家讲解这个小技巧的好处体现在哪~
场景
先来说说我的场景吧,我在项目开发中对一个基础组件 BasicComp.vue进行二次封装,总共封装了两层,如下图
我先把 BasicComp.vue 简单化一下:
而我想要做的效果是在 Page.vue、Index.vue中都能调用BasicComp.vue身上的方法changeShow去控制show变量的改变,比如下面的效果
实现代码如下:
SecondComp.vue
Index.vue
Page.vue
太麻烦了!
大家也看到了,上面的代码实现非常麻烦,得一层一层利用 emits 往上传
但是突然有一天我发现了一个 Vue3 的特性,貌似很多人都没发现,那就是:组件的事件往下传可以进行叠加!
什么意思呢?我通过一个小例子来说明,我准备了 祖孙三个组件
Sunzi.vue
Erzi.vue
Yeye.vue
最输出表现为:
我在Erzi.vue 中并没有去接收 Yeye.vue 传下来的 emits,但是它却能透传到Sunzi.vue 中,并且两者叠加
代码优化
通过刚刚发现的小特性,我们可以对一开始的代码进行优化
只需要封装一个 Hooks
Index.vue
Page.vue
最终达到想要的结果
Vben-Admin受到的启发
Vben-Admin 是一个非常出色的开源 Vue3 项目,它代码中就大量使用了 事件叠加 的技巧,尤其是 Table、Drawer、Modal 这类可控组件,我也是从里面学到的技巧~
猜你喜欢
- 2024-09-14 Vue+Element UI实现断点续传、分片上传、秒传
- 2024-09-14 Vue3-笔记十.5(透传Attributes)(vue组件穿透什么意思)
- 2024-09-14 写 Vue 我建议非必要别用 watch(vue不用写html吗)
- 2024-09-14 一文看完vue3的变化之处(vue3稳定吗)
- 2024-09-14 vue中的v-model刨根问底(vue v-model.lazy)
- 2024-09-14 vue的父组件和子组件冲突问题(vue中父组件怎么调用子组件的方法)
- 2024-09-14 「面试题」如何去掉vue的url地址中的#号?及其原理?
- 2024-09-14 Vue进阶(七十一):webpack实现一键动态切换主题色
- 2024-09-14 vue2组件系列第三十七节:Collapse 折叠面板
- 2024-09-14 前端知识点总结——Vue(前端面试题2021及答案vue)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)