无意中发现 Vue3 的小技巧,帮我节省很多代码

开发 前端
Vben-Admin 是一个非常出色的开源 Vue3 项目,它代码中就大量使用了 事件叠加 的技巧,尤其是 Table、Drawer、Modal 这类可控组件,我也是从里面学到的技巧~

最近在开发 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 这类可控组件,我也是从里面学到的技巧!

责任编辑:武晓燕 来源: 前端之神
相关推荐

2009-08-29 08:37:33

2011-05-04 13:13:04

2021-04-08 11:46:41

String hashJava代码

2024-03-12 12:27:00

Vue 3前端开发

2021-12-01 08:11:44

Vue3 插件Vue应用

2011-05-04 10:01:04

2021-01-15 05:16:37

Vue3开源代码量

2024-02-28 08:35:26

内置组件Vue3页面

2022-12-12 13:19:11

Vue3开发技巧

2021-11-30 08:19:43

Vue3 插件Vue应用

2023-11-28 09:03:59

Vue.jsJavaScript

2020-08-19 12:49:35

SQLPython流量查询

2021-12-02 05:50:35

Vue3 插件Vue应用

2020-09-19 21:15:26

Composition

2020-11-16 11:10:21

代码开发工具

2025-01-06 08:57:19

Vue技巧

2022-07-08 08:52:25

Vue3组合动态返回

2009-09-17 16:21:57

WSUS服务器

2022-02-22 10:17:20

Linux工具命令

2021-12-08 09:09:33

Vue 3 Computed Vue2
点赞
收藏

51CTO技术栈公众号