文章主要介绍了在Vue3项目中发现的一个小技巧:组件的事件可以往下传递并进行叠加,这有助于简化代码和提高开发效率。作者通过实例详细解释了这一技巧的应用场景和实现方法,并从Vben-Admin项目中汲取了灵感。
作者在开发过程中偶然发现了Vue3组件的事件可以往下传递并进行叠加,这有助于减少代码量和提高开发效率。
作者通过祖孙三个组件(Sunzi.vue、Erzi.vue和Yeye.vue)的例子,详细解释了事件叠加技巧的应用,帮助读者更好地理解这一技巧。
作者提到Vben-Admin项目大量使用了事件叠加的技巧,尤其是Table、Drawer、Modal等可控组件,从中学到了很多技巧。
作者利用发现的小技巧对初始代码进行了优化,通过封装Hooks简化了代码,提高了开发效率。
无意中发现 Vue3 的小技巧,帮我节省很多代码
前言
大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心~
最近在开发 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