antd+vue实现递归(实例)

实现的效果:
在这里插入图片描述
代码:
父页面

<template>
  <a-row :gutter="24">
    <a-col :md="24">
      <a-card title="递归实验">
        <a-steps :current="current">
          <a-step v-for="(item, index) in dataSteps" :key="index" :title="item.name">
            <template slot="description">
              <div v-if="item.children">
                <RecursionCom :children="item.children"></RecursionCom>
              </div>
            </template>
          </a-step>
        </a-steps>
      </a-card>
    </a-col>
  </a-row>
</template>

<script>
import RecursionCom from '@/components/RecursionCom'
export default {
  name: 'Recursion',
  components: { RecursionCom },
  data () {
    return {
      current: 1,
      dataSteps: [
        {
          id: 'as',
          name: 'Amy',
          age: 12,
          children: [
            {
              id: 'aqs',
              name: 'Amy1',
              age: 11
            },
            {
              id: 'aqsq',
              name: 'Amy2',
              age: 10,
              children: [
                {
                  id: 'aqs1',
                  name: 'Amy22',
                  age: 17
                },
                {
                  id: 'aqs2',
                  name: 'Amy23',
                  age: 10
                }
              ]
            },
            {
              id: 'sq',
              name: 'Amy3',
              age: 13
            }
          ]
        },
        {
          id: 'bs',
          name: 'Bill',
          age: 18,
          children: [
            {
              id: 'bs1',
              name: 'Bill1',
              age: 17
            },
            {
              id: 'bs2',
              name: 'Bill2',
              age: 10
            }
          ]
        },
        {
          id: 'cs',
          name: 'Claire',
          age: 34,
          children: [
            {
              id: 'cs1',
              name: 'Claire1',
              age: 14
            },
            {
              id: 'cs2',
              name: 'Claire2',
              age: 45,
              children: [
                {
                  id: 'cs22',
                  name: 'Claire22',
                  age: 14
                },
                {
                  id: 'cs23',
                  name: 'Claire23',
                  age: 14,
                  children: [
                    {
                      id: 'cs233',
                      name: 'Claire233',
                      age: 19
                    },
                    {
                      id: 'cs234',
                      name: 'Claire234',
                      age: 10
                    }
                  ]
                }
              ]
            }
          ]
        },
         {
          id: 'a5s',
          name: 'Damon',
          age: 12,
          children: [
            {
              id: 'dd3',
              name: 'Damon1',
              age: 11
            },
            {
              id: 'e4',
              name: 'Damon2',
              age: 10,
              children: [
                {
                  id: '3e',
                  name: 'Damon22',
                  age: 17
                },
                {
                  id: 'r4',
                  name: 'Damon23',
                  age: 10
                }
              ]
            },
            {
              id: 't5',
              name: 'Damon3',
              age: 13
            }
          ]
        }
      ]
    }
  },
  methods: {}
}
</script>
<style>
</style>

递归组件:

<template>
  <ul>
    <li v-for="(item, index) in children" :key="index">
      {{ item.name }}
      <div v-if="item.children">
        <RecursionCom :children="item.children"></RecursionCom>
      </div>
    </li>
  </ul>
</template>
<script>
export default {
  name: 'RecursionCom',
  props: {
    children: {
      type: Array,
      default: () => {
        return []
      }
    }
  }
}
</script>

import RecursionCom from './RecursionCom';
export default RecursionCom;

注意三点:

  1. 在父页面中,调用递归组件需要满足条件,(本例中为item.children存在)。调用组件需要写在循环里,调用的时候把children传过去,名字需要一致,不要自己乱起名
  2. 在递归组件里,接收父页面传过来的children,循环展示,在循环里判断children里的children是否存在,如果条件满足,调用递归组件,把值传进去。一直循环,直到没有children,即不满足条件
  3. 循环不要写在根标签上,要用一层标签包起来。

都是踩过的坑,记录一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要搭建一个基于Vite、Ant Design和Vue 3的项目,你可以按照以下步骤进行操作: 1. 首先,你需要安装Vite。你可以通过运行以下命令来安装最新版本的Vite: ``` npm init vite@latest my-project cd my-project npm install ``` 这将创建一个新的Vite项目,并安装所有必要的依赖项。 2. 接下来,你需要安装Ant Design Vue。运行以下命令来安装Ant Design Vue库: ``` npm install ant-design-vue@next ``` 这将安装最新版本的Ant Design Vue,并将其添加到你的项目中。 3. 配置路由。你可以通过以下步骤来配置Vue Router: - 首先,运行以下命令来安装Vue Router: ``` npm install vue-router@next ``` - 在你的项目的src目录下创建一个名为"router"的文件夹。 - 在"router"文件夹中创建一个名为"index.js"的文件,并配置你的路由信息。 - 最后,在项目的"main.js"文件中引入并使用Vue Router。 以上是使用Vite、Ant Design VueVue 3搭建项目的基本步骤。你可以根据需要进一步添加其他功能和组件。祝你搭建项目成功!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue3+vite+antd 后台管理系统基础模板](https://download.csdn.net/download/yehaocheng520/87420798)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [vite + vue3 + Antd 搭建后台管理系统](https://blog.csdn.net/m0_58094704/article/details/127850749)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值