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

渲染結果大概是:

  第一層

    第二層

      第三層

  第一層

用來做樹型數據的列表往往很好用,節省了代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM