>>分享孙卫琴的Java技术专稿和著作 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 8326 个阅读者 刷新本主题
 * 贴子主题:  【Vue.js技术专题】组件的递归 回复文章 点赞(0)  收藏  
作者:sunweiqin    发表时间:2022-08-29 16:15:45     消息  查看  搜索  好友  邮件  复制  引用

本文参考孙卫琴,杜聚宾所创作的 <<精通Vue.js: Web前端开发技术详解>>一书

在一个组件的模板中,还可以嵌套自身组件,这样就构成了组件的递归。为了避免无限递归,需要设置递归的结束条件。在例程1的recursive.html中,<category>组件的模板会插入自身组件,从而递归遍历访问list数组中的所有嵌套的元素。模板中“<template v-if="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数组中的嵌套内容会以缩进对齐的方式一层层展示出来。
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
图1  recursive.html的网页






程序猿的技术大观园:www.javathinker.net
  Java面向对象编程-->Swing组件(上)
  JavaWeb开发-->使用Session(Ⅰ)
  JSP与Hibernate开发-->数据库事务的并发问题的解决方案
  Java网络编程-->通过JDBC API访问数据库
  精通Spring-->CSS过渡和动画
  Vue3开发-->虚拟DOM和render()函数
  【Vue.js技术专题】命名路由
  【Vue.js技术专题】插槽slot的基本用法
  【Spring Cloud Alibaba专题】SkyWalking整合MySQL
  【Spring Cloud Alibaba专题】GateWay与Nacos整合
  【Spring Cloud Alibaba专题】Nacos集群的Raft算法
  【Spring专题】@ControllerAdvice注解的用法
  【Spring专题】Spring框架的数据验证机制
  【Vue专题】Vue3的计算属性实用范例:实现购物车
  【持久化专题】映射一对多双向关联关系
  【持久化专题】@Access注解设定Hibernate访问类的属性的方式
  【持久化专题】FetchType.LAZY延迟检索策略
  【Java网络编程专题】用Apache FTPClient在FTP服务器上创建目...
  【JavaWeb专题】Tomcat与IIS集成详解
  【Java基础编程专题】Java基本类型和引用类型的三个区别
  【Java基础编程专题】Java继承的利弊和使用原则
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。