zoukankan      html  css  js  c++  java
  • vue组件使用name属性来生成递归组件

    先来个简单的数据

     1 lists =  [{
     2     id: 1,
     3     title: '第一层',
     4     children: [{
     5             id: 3,
     6             title: '第二层',
     7             children: [{
     8                 id: 4,
     9                 title: 第三层
    10             }]
    11         }]
    12     },{
    13     id: 2,
    14     title: '第一层'
    15 }]

    上面的数据是个很简单的数据,一个数组,嵌套了3层,即id为1为祖,id为3为父,id为4位孙。

    创建一个简单的单组件,list.vue,name属性为list

     1 <template>
     2   <div>
     3     <div
     4       class="item"
     5       v-for="(item, index) in lists"
     6       :key="index"
     7     >
     8       <div class="item-title">
     9         {{item.title}}
    10       </div>
    11       <div v-if="item.children" class="item-children">
    12         <!-- 调用自己,将数据传递进去,一定要加判断数据是否存在,以防出bUG -->
    13         <!-- 使用组件nama属性list来调用 -->
    14         <list :list="item.children"></list>
    15       </div>
    16     </div>
    17   </div>
    18 </template>
    19 
    20 <script>
    21 export default {
    22   // name主要是为了使用递归组件
    23   name: 'DetailList',
    24   props: {
    25     // 数据上方
    26     lists: Array
    27   }
    28 }

    渲染结果为:

      第一层

      第二层

      第三层

      第一层

    好像有点难分,给item-children加个padding-left属性,

    如padding-left: .2rem

    渲染结果大概是:

      第一层

        第二层

          第三层

      第一层

    用来做树型数据的列表往往很好用,节省了代码。

    以梦为马
  • 相关阅读:
    增量学习中的自我训练
    半监督学习和直推学习的区别
    LeetCode: Word Break
    LeetCode: Linked List Cycle
    LeetCode: Reorder List
    LeetCode: Binary Tree Traversal
    LeetCode: LRU Cache
    LeetCode: Insertion Sort List
    LeetCode: Sort List
    LeetCode: Max Points on a Line
  • 原文地址:https://www.cnblogs.com/lsAxy/p/12842296.html
Copyright © 2011-2022 走看看