vue组件使用name属性来生成递归组件
Posted lsaxy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
渲染结果大概是:
第一层
第二层
第三层
第一层
用来做树型数据的列表往往很好用,节省了代码。
以上是关于vue组件使用name属性来生成递归组件的主要内容,如果未能解决你的问题,请参考以下文章