当前位置: 首页 > news >正文

孙卫琴的《精通Vue.js》读书笔记-组件的递归

本文参考孙卫琴,杜聚宾所创作的 <<精通Vue.js: Web前端开发技术详解>>一书
在这里插入图片描述
在一个组件的模板中,还可以嵌套自身组件,这样就构成了组件的递归。为了避免无限递归,需要设置递归的结束条件。在例程1的recursive.html中,组件的模板会插入自身组件,从而递归遍历访问list数组中的所有嵌套的元素。模板中“”的v-if指令用来设置递归结束条件,当list数组为空,就结束递归。

例程1 recursive.html

    <div id="app">
      <category :list="items"></category>
    </div>

    <script>
      const app=Vue.createApp({
        data(){
          return {
            items:[{
              type:'生物',  
              subtype:[
                {
                   type:'植物',
                   subtype:[{type:'树木'},{type:'灌木'},{type:'青草'}]
                },
                {
                   type:'动物',
                   subtype:[{type:'猫'},
                              {type:'狗'},
                              {type:'鱼',
                               subtype:[{type:'鲤鱼'},{type:'鲨鱼'}]}
                             ]
                }
              ]          
            }]
          }
        }
      })

      app.component('category', {
        props:{
          list:{type:Array}
        },
        template: ` <ul><template v-if="list">
            <li v-for="item in list">
               {{item.type}}
               <category :list="item.subtype"></category>
            </li>
          </template></ul> `
      })
      app.mount('#app')
    </script>

通过浏览器访问recursive.html,会得到如图1所示的网页,list数组中的嵌套内容会以缩进对齐的方式一层层展示出来。
在这里插入图片描述

图1 recursive.html的网页

相关文章:

  • 微信支付服务商模式(电商收付通)实现分账操作
  • LeetCode 946 验证栈序列[栈 模拟] HERODING的LeetCode之路
  • 第十七天计算机视觉之光学字符识别基础理论
  • 混迹职场10多年的数据开发老鸟,居然被一个职场新人上了一课
  • PHP - AJAX 与 PHP
  • 微服务项目调用外部接口
  • 【Python】第八课 异常处理
  • Atomic Mail Sender 9.6.X 中文版Crack
  • 【重识云原生】第六章容器6.1.4节——Docker核心技术LXC
  • mysql—自增长和索引
  • 【C语言】带你深入剖析字符串相关知识(详细讲解+源码展示)
  • PostgreSQL 常用管理命令
  • Canny边缘检测数学原理及Python代码实现
  • 代码解析MixFormer: Mixing Features across Windows and Dimensions
  • 墨者-网络安全
  • JS 中的深拷贝与浅拷贝
  • 【附node操作实例】redis简明入门系列—字符串类型
  • es6
  • JavaScript的使用你知道几种?(上)
  • JavaScript实现分页效果
  • leetcode386. Lexicographical Numbers
  • Linux中的硬链接与软链接
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • react-native 安卓真机环境搭建
  • Spark学习笔记之相关记录
  • vue-router的history模式发布配置
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 后端_ThinkPHP5
  • 爬虫模拟登陆 SegmentFault
  • elasticsearch-head插件安装
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​520就是要宠粉,你的心头书我买单
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .net专家(张羿专栏)
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • .sh 的运行
  • .skip() 和 .only() 的使用
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • @Transaction注解失效的几种场景(附有示例代码)
  • [100天算法】-目标和(day 79)
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [C/C++] -- 二叉树
  • [C++]——带你学习类和对象
  • [caffe(二)]Python加载训练caffe模型并进行测试1
  • [codeforces]Recover the String