vue之递归组件实现导航栏

这篇博客介绍了如何使用Vue和ElementUI创建递归组件来实现导航栏菜单。作者指出,递归组件的关键在于设置name属性以避免无限递归,并提供判断条件。在遇到template只能有一个根元素的问题时,通过将循环放在父组件中解决,从而成功构建导航栏。博客最后分享了遇到的问题及解决方案,鼓励读者交流指正。
摘要由CSDN通过智能技术生成

最近自己写demo用到了递归组件来实现导航栏菜单,特此记录:

1、什么是递归组件?

就是自己调用自己,比如我们的导航栏菜单,父级菜单下有子菜单,子菜单下还有子菜单,可以这样无穷无尽,就像俄罗斯套娃。
注意:递归组件与一般组件不同的地方是,你需要给组件提供一个name选项。
就像这样:在这里插入图片描述
递归组件适合那些在UI上有父子关系的场景

2、怎么创建递归组件

就像上图,先写一个组件,给它命个名,然后在内部调用以它命名的组件,这样就创建了一个递归组件。
除了name选项是必须的之外,还有一点也是在实现递归组件要注意的,就是要防止无限递归,造成调用栈溢出。怎么防止呢?就是给它加判断条件咯。

3、实现导航栏

这里我是用的vue+elementUI来实现的,观察elementUI的导航栏例子,可以发现,我们要做的就是把黄色圈中的部分做成组件,然后把绿色圈中的内容替换为此组件就实现了递归调用。
在这里插入图片描述

主要想说的是下面这个问题:

因为template模板中只能有一个根元素,所以一开始我是这样写的:

父组件:
在这里插入图片描述
子组件:
在这里插入图片描述
写完后发现导航栏是显示了,但是点击没有效果,因为我在el-menu标签和el-submenu或el-menu-item标签之间加了一个div标签,跟elementUI例子就不一样了。

后来在网上找了一下相关资料,找到一种方法:
就是把循环放在父组件来做,就像这样:
父组件
在这里插入图片描述
子组件
在这里插入图片描述
这样,我们的导航栏就做好了。
当然,导航栏的实现方式有很多,这只是之一。
本篇纯属自己学习笔记,如有错误之处,希望大家多多指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值