vue-element-admin vue递归组件做导航栏菜单 SidebarItem

海星吧 2020-5-12 4207

之前看vue-element-admin这个模板项目的时候太敷衍了,看不懂就不看。

但是现在重新来看看,这个东西写的是真的有意思。


我最开始学的时候,做一个导航栏组件的时候,总是需要一边配置路由,一边还要配置导航栏的数组。

不能直接用router配置就很烦。

因为有的路由是有子路由的,而有的又没有子路由。

但是把router的数组用来写又会有问题。

而今天看了下vue-element-admin的导航栏菜单的写法,发现他用了一个vue文档上就有的方法。

递归组件。

当初看文档的时候觉得这个东西好像没啥用的样子,但是现在看来,其实是我当时没搞懂这个东西的用法罢了。


递归组件的用法是,可以将组件内引用组件本身。

也就是说

template

   div   v-if  !obj.son

        {{obj}}

    div v-esle

         tree  v-for="child in item.son"  /


script

    name:tree

    porps:{obj:array}


差不多就是这个样子吧。

porps接受一个数组,这个时候需要用v-if来判断它是否有子数组。

如果没有,那就是正常的打印obj

如果有的话,那就循环赋值给自身

这样的话,就可以直接使用 router里的数组了


而且这样有个好处,那就是无论你有多少层子路由,它都可以通过递归来展示。

理论上只要页面允许,你可以无限递归展示子路由。


这个组件的路径在 vue-element-admin ---  @/layout/components/Sidebar/SidebarItem.vue


有兴趣的可以看看他里面写的代码。

注意如果要使用的话,script - export default 需要赋予 name这个属性 ,然后在组件里使用name作为标签,

然后就必须使用 v-if来判断,否则递归是无效的。


如果有更好的建议或者拓展,欢迎留言。


弱鸡程序员年底还在加班
最新回复 (2)
  • 海星吧 2020-5-13
    1 2
    薛定谔 我想问我很感兴趣的小问题,程序猿要写注释吗?我看他们说注释这玩意儿自己懒得写,但是会看又看不懂,贼有趣~
    前端的业务代码基本上都差不多,不写注释也是可以看得懂的。
    如果比较复杂,有必要的就写一下。
    还有前后端交互接口是需要写注释的。
    弱鸡程序员年底还在加班
  • 海星吧 2020-5-13
    0 3
    越来越透明兽 一直自己维护无所谓反正自己写的看得懂,要是接手别人的没有注释的话会很烦 undefined
    有的地方招个员工,项目做到一半就踢了,这个时候没有注释,然后又让新人来接盘,整死人。
    弱鸡程序员年底还在加班
    • ACG里世界
      4
          
返回
发新帖