先來個簡單的數據
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
渲染結果大概是:
第一層
第二層
第三層
第一層
用來做樹型數據的列表往往很好用,節省了代碼。
