vite2+vue3+ts-递归组件的实例

导出树状结构,多用于商品分类效果

<script setup lang="ts">
import DIGUIZI from './DIGUIZI.vue'
import {reactive} from 'vue'
import treeList from '../utils/type'

const data = reactive<treeList[]>([
  {
    name:'no.1',
    children:[
      {
        name:'no.1-1',
        children:[
          {
            name:'no.1-1-1'
          }
        ]
      }
    ]
  },
  {
    name:'no.2',
    children:[
      {
        name:'no.2-1'
      }
    ]
  },
  {
    name:'no.3'
  },
  {
    name:'no.4',
    children:[]
  }
])

const getItem = (item)=>{
  console.log('fuzujian',item)
}

</script>

<template>
  <div class="menu">
    菜单区域
    <DIGUIZI :data="data" @on-click="getItem"/>
  </div>
</template>

<style scoped>
.menu{width: 200px; border:1px solid #ccc}
</style>

<script setup lang="ts">
import treeList from '../utils/type'
type props={
  data?:treeList[]
}
defineProps<props>()
const emit = defineEmits(['on-click'])
const clickItem = (item:treeList)=>{
  emit('on-click',item)
}
</script>
<template>
  <div class="tree">
    <div @click.stop="clickItem(item)" v-for="(item,index) in data" :key="index">
      {{item.name}}
      <DIGUIZI @on-click="clickItem" v-if="item?.children?.length" :data="item.children"></DIGUIZI>
    </div>
  </div>
</template>
<style scoped>
.tree{margin-left: 10px;}
</style>

/utils/type文件内容:

type treeList = {
    name:string,
    icon?:string,
    children?: treeList[] | []
}

export default treeList

测试后,有效,特此记录一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值