vue3使用render函数渲染一个树形组件
时间: 2023-10-31 18:03:08 浏览: 129
何时/使用 Vue3 render 函数的教程详解
以下是一个使用render函数渲染树形组件的示例代码:
```vue
<template>
<div>
<h1>Tree Component</h1>
<div class="tree">
{{ renderTree(treeData) }}
</div>
</div>
</template>
<script>
export default {
data() {
return {
treeData: {
label: 'root',
children: [
{
label: 'child1',
children: [
{
label: 'grandchild1'
},
{
label: 'grandchild2'
}
]
},
{
label: 'child2',
children: [
{
label: 'grandchild3'
},
{
label: 'grandchild4'
}
]
}
]
}
}
},
methods: {
renderTree(node) {
return (
<div>
<span>{node.label}</span>
{node.children && node.children.map(child => this.renderTree(child))}
</div>
)
}
}
}
</script>
<style>
.tree {
margin-left: 20px;
}
.tree span {
margin-right: 10px;
font-weight: bold;
}
</style>
```
在这个示例中,我们使用了render函数来递归地渲染树形结构。我们首先定义了一个treeData对象,它有一个label属性和一个children数组,每个children元素也是一个treeData对象。
在组件的renderTree方法中,我们使用JSX语法来渲染每个节点。我们先渲染当前节点的label,然后使用map函数递归地渲染每个子节点。如果当前节点没有子节点,则不渲染children属性。
最后,在组件的模板中,我们调用renderTree方法来渲染树形结构。我们将整个树形结构包裹在一个div元素中,并使用CSS样式来缩进每个子节点。
阅读全文