资讯专栏INFORMATION COLUMN

Vue一个案例引发的递归组件的使用

lucas / 2077人阅读

摘要:今天我们继续使用的撸我们的实战项目,只有在实战中我们才会领悟更多,光纸上谈兵然并卵,继上篇我们的一个案例引发的动态组件与全局事件绑定总结之后,今天来聊一聊我们如何在项目中使用递归组件。

今天我们继续使用 Vue 的撸我们的实战项目,只有在实战中我们才会领悟更多,光纸上谈兵然并卵,继上篇我们的《Vue一个案例引发的动态组件与全局事件绑定总结》 之后,今天来聊一聊我们如何在项目中使用递归组件。

信息的分类展示列表

这次我们主要是实现一个信息的分类展示列表存在二级/三级的分类,如下如所示:

看到这个很多人会想到这个实现起来很简单啊,来个嵌套循环不就完事了。

对,你说的没错,事实就是这样简单。那么就先来看看这么简单的列表怎么实现的,然后这个方案的劣势在哪里。

首先看看我们的数据格式

list: [{
    name: "经济",
    children: [{
        name: "如家"
    }, {
        name: "7天"     
    }]
}, {
    name: "舒适",
    children: [{
        name: "智选假日"
    }, {
        name: "全季"     
    }]
}]

基于上面的数据格式,我们的实现方式如下:

{{item.name}}
{{child.name}}

嗯,看上去非常完美,我们的列表也非常好的展现出来,大功告成。

可是突然有一天咱们的产品突然跑过来说,我们的数据现在多加了一级分类,现在变成这样子了。

list: [{
    name: "经济",
    children: [{
        name: "如家",
        children: [{
            name: "长江路-如家"
        }, {
            name: "望江路-如家"     
        }]
    }, {
        name: "7天",
        children: [{
            name: "长江路-7天"
        }, {
            name: "望江路-7天"     
        }]
    }]
}]

好吧,既然产品有需求数据有变化,那么我们就改代码吧,于是我们在原有的代码上继续加上一层嵌套循环,这次又总算完成了,但是可能没过两天我们的数据又增加了一级分类怎么办?还是继续嵌套下去?

有些同学可能就会觉得了,哪有这么多层级的数据展示,肯定不会存在的,那只能说我们太年轻,我们不排除这种存在的可能,那如果我们遇到这种情况怎么办?这里就要用到我们说的 递归组件 了,无论你的数据怎么增加我们都不用改动我们的代码。

递归组件

什么是递归组件?简单来说就是在组件中内使用组件本身,下面我们就来看看如何在项目中使用递归组件去解决我们上面问题。

首先我们先创建一个 List 的递归组件


注意上面的代码中我们使用了 List 组件本身,完成这些之后,我们在外部父级组件中使用 List 组件时,不管我们的数据有多少层嵌套关系,都可以完美的自适应加载,我们再也不用通过嵌套嵌套在嵌套了。


最后我们来看看渲染后的结果

总结

如上就是我们今天要说的递归组件,小伙伴们赶紧上手试试吧。

类似与信息分类的展示在我们的项目中是非常常见的形式,我们利用递归组件可以很好的去解决问题

关注微信公众号:六小登登。领取全套学习资源

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/108602.html

相关文章

  • Element组件引发Vue中mixins使用,写出高复用组件

    摘要:我们就来说说如何创建一个灵活的高复用的组件。在一款优秀的组件库中有这么两个组件与。什么是官方说法混入是一种分发组件中可复用功能的非常灵活的方式。对象可以包含实例中的所有选项,当组件使用对象时,对象中的所有选项将和组件中的选项进行合并。 我们都知道 Vue 采用的是一种组件化开发模式,组件在 Vue 中一个非常重要的核心概念。每个组件都是一个完整的实例,组件的创建,组件间的通讯,组件如何...

    AlphaGooo 评论0 收藏0
  • Vue一个案例引发动态组件与全局事件绑定总结

    摘要:我们需要的最好效果肯定是当前的全局事件就在当前的组件下产生作用,当我们切换到其他组件时,事件自动删除,于是我可能想到的就是利用钩子函数去删除这个全局事件。 最近在自学 Vue 也了解了一些基本用法,也记录了一些笔记有兴趣的朋友可以去查看我的其他文章,技术这东西真的不能光靠看,看是没有的,你必须要动手实践,只有在实战项目中才能发现问题,才能发现我们没有掌握的知识点,然后发现问题解决问题,...

    MycLambert 评论0 收藏0
  • Vue一个案例引发「动画」使用总结

    摘要:既然我们知道了方法,我们就来给它加一个简单的动画。动画中还给我们提供了一些钩子函数,我们可以使用钩子函数构建动画。它会告知我们的动画完成,我们绑定了为,告诉组件跳过的检测,使用。 项目开发中动画有着很重要的作用,而且也是用到的地方非常多,例如:鼠标的进入离开,弹窗效果,组件的显示隐藏,列表的切换等等,可以说我们网页上的动画无处不在,也有人说了,这些东西也可以不使用动画。 对,你说的没错...

    liuchengxu 评论0 收藏0
  • 前端知识点

    摘要:原理对处理函数进行延时操作,若设定的延时到来之前,再次触发事件,则清除上一次的延时操作定时器,重新定时。在目标发出内容改变的事件后,直接接收事件并作出响应。首先是目标的构造函数,他有个数组,用于添加观察者。 关于排序 js中sort函数的底层实现机制? js中sort内置多种排序算法,是根据要排序数的乱序程度来决定使用哪一种排序方法。V8 引擎 sort 函数只给出了两种排序 Inse...

    wums 评论0 收藏0
  • 记录一次利用Timeline Performance工具进行 React性能优化真实案例

    摘要:出现红帧表示页面已经超负荷,会出现卡顿,响应缓慢等现象。因此当滑动周日历时已经不会有红帧发生了。我的目的是每一次递归会调用一次与但是这样写只会在递归结束时调用一次因此修改如下这样优化之后,发现内存占用下降一些,但是红帧仍然存在。 性能优化可以说是衡量一个前端程序员react使用水平的重要标准。 在学习react之初的时候,由于对react不够了解,写的项目虽然功能都实现了,但是性能优化...

    jsyzchen 评论0 收藏0

发表评论

0条评论

lucas

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<