vue3 --递归组件的使用

—参考zs小满的博客

/*

  父组件中定义数据:
  const list = reactive<Tree[]>([
	  {
	    name: "1",
	    checked: true,
	    children: [
	      {
	        name: "1-1",
	        checked: false,
	      },
	    ],
	  },
	  {
	  	name: "2",
	    checked: false
	  }
  ])

*/
<template>
  <div class="tree" @click.stop="handle(item)" v-for="item in data" :key="item.name">
    <input type="checkbox" v-model="item.checked" />
    <span>{{ item.name }}</span>
    // 此处MyTest为对应的文件名 MyTest.vue
    <MyTest v-if="item?.children?.length" :data="item?.children" />
  </div>
</template>

<script setup lang="ts" >
interface Tree {
  name: string;
  checked: boolean;
  children?: Tree[];
}

// 这里接受props, 注意类型{propName:propType}
defineProps<{
  data?: Tree[];
}>();

const handle = (item:Tree) => {
  console.log(item.name)
}
</script>
<style lang="scss">
.tree {
  margin-left: 10px;
}
</style>

递归时候修改使用的文件名称

方法1: 增加一个script,export name

<script lang="ts">
	export default {
	  name: 'mydefinename'
	}
</script> 

方法2: 使用插件``npm i unplugin-vue-define-options`

  1. vite.config.js中注册插件
    import DefineOptions from 'unplugin-vue-define-options/vite'
    // 在defineConfig中添加
    plugins: [vue(),  DefineOptions()]
    
  2. tsconfig.node.json中 "types": ["unplugin-vue-define-options/macros-global"],
  3. 在使用递归组件的vue文件中,会自动defineOptions({ name: 'xdfdfdf' }) , 则可以使用<xdfdfdf/>标签了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值