结合ts 的vue 递归组件写法

vue 结合ts 使用时,递归组件的写法:
也是用name来引用,关键这里说下在哪里设置name

<div>
<p>{{data.text}}</p> 
// 引用自己作为递归子组件
<listTree 
	:level="level + 1" 
	:nodeData="data.children" 
	v-if="data.children">
</listTree>
</div>
</template>
<script lang="ts">
import { Component, Prop, Vue, Watch } from "vue-property-decorator";
import { State, Getter, Action, Mutation, namespace } from "vuex-class";
@component({name: "listTree"}) // 需要在component 装饰器里注册name,用于递归自己
export default class listTreeComponent extends Vue {
	@Prop({default: ()=> []}) nodeData;
	@Prop({default: 1}) level;
}
</script>

注意这里用的不是 对象名称listTreeComponent ,而是需要在component 里注册name
话说坑的我好惨,在本地listTreeComponent 竟然是可以起作用的,然而发到线上就挂了,应用的组件没有解析成dom,都是泪啊

vue 的通用递归组件写法:
在本组件内使用自己注册的name 来引用自身

<template>
...
<div>
<p>{{data.text}}</p> 
// 引用自己作为递归子组件
<listTree 
	:level="level + 1" 
	:nodeData="data.children" 
	v-if="data.children">
</listTree>
</div>
</template>
<script>
export default {
	name: "listTree", // name用来在本组件内引用自己
	prop:{
		nodeData: {
			default: ()=> []
		},
		level: {
			default: 1
		}
	}
}
</script>
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值