【VUE】组件的递归

前言:
在使用vue框架进行开发的时候可能会使用到组件的递归,比如常见的树形结构。
代码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" />
        <meta name="format-detection" content="telephone=no,email=no,date=no,address=no"/>
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
        <title>组件的递归:属性目录</title>
        <style>
            [v-cloak]{
                display: none;
            }
            .tree-row{
                width: 100%;
                height: auto;
                box-sizing: border-box;
                border-top: 1px solid #efefef;
                border-bottom: 1px solid #efefef;
                font-size: 14px;
                overflow: hidden;
                padding-top: 10px;
                padding-bottom: 10px;
            }
        </style>
    </head>
    <body>
        <div id="app" v-cloak>
        </div>
        <script src="../js/vue.js"></script>
        <script>
            //子组件
            let TreeComponent={
                name:'tree-component',//组件的递归名称(组件递归必须的属性)
                props:{
                    data:Array,
                    //level表示第基层,0表示第一层,1表示第二层(组件递归必须的属性)
                    level:{
                        type:Number,
                        default:0
                    }
                },
                template:`
                    <div>
                        <div class="tree-row" v-for="(item,index) in data" :key="index">
                            <span :style="{'padding-left':level*20+'px'}">{{item.title}}</span>
                            <tree-component :level="level+1" v-if="item.children && item.children.length > 0" :data="item.children"></tree-component>
                        </div>
                    </div>
                `
            };
            //父组件
            new Vue({
                el:"#app",
                data(){
                    return{
                        classify:[
                            {
                                title:'数码',
                                children:[
                                    {
                                        title:'手机',
                                        children:[
                                            {
                                                title:'华为手机'
                                            },
                                            {
                                                title:'苹果手机'
                                            }
                                        ]
                                    },{
                                        title:'电脑'
                                    }
                                ]
                            },
                            {
                                title:'家电',
                                children:[
                                    {
                                        title:'大家电'
                                    },
                                    {
                                        title:'生活电器'
                                    },
                                    {
                                        title:'家电服务'
                                    }
                                ]
                            }
                        ]
                    }
                },
                components:{
                    TreeComponent
                },
                template:`
                    <div>
                        <tree-Component :data="classify"></tree-Component>
                    </div>
                `
            });
        </script>
    </body>
</html>

效果图如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值