vue组件递归

258 阅读1分钟

递归组件,就是在组件中内使用组件本身。通常使用在多级列表的渲染上。 

 父组件

// Index.vue
<template>  
    <div class="index">    
        <list :list="list"></list>  
    </div>
</template>
<script>
    import List from "./List";
    export default {  
        name: "Index",  
        data() {    
            return {      
                list: [        
                    {          
                        name: 1,          
                        children: [            
                            {              
                                name: "1-1"           
                            },            
                            {             
                                name: "1-2"            
                            }          
                        ]        
                    },        
                    {          
                        name: 2,          
                        children: [            
                            {              
                                name: "2-1"            
                            },            
                            {              
                                name: "2-2"            
                            }          
                        ]        
                    }      
                ]    
            };  
        },  
        components: {   List  }
    };
  </script>

 子组件:

<template>  
    <div class="recursion">    
        <div class="list-item" v-for="(item, index) in list" :key="index">      
            <div class="item-name">        
                <span>{{ item.name }}</span>      
            </div>      
            <div v-if="item.children" class="child-item">        
                <list :list="item.children"></list>      
            </div>    
        </div>  
    </div>
</template>
<script>
    export default {  
        name: "List",  
        props: {    list: Array  }
    };
</script>

 渲染效果: