淘先锋技术网

首页 1 2 3 4 5 6 7

在Vue的应用中,菜单是一个非常常见的组件。对于复杂菜单,我们往往需要一个数据结构来描述。

export default [{
title: '菜单1',
children: [{
title: '子菜单1'
}, {
title: '子菜单2',
children: [{
title: '子菜单2-1'
},{
title: '子菜单2-2'
}]
}]
}, {
title: '菜单2',
children: [{
title: '子菜单3'
}]
}];

这是一个简单的Vue菜单结构数据。每个菜单项通常会包括一个标题和一个子菜单(如果有的话),子菜单也可以包括其他子菜单。

对于这个数据结构,我们可以使用递归组件来渲染。下面是一个简单的例子:

<template>
<ul>
<li v-for="item in items">
{{ item.title }}
<TreeView :items="item.children" v-if="item.children" />
</li>
</ul>
</template>
<script>
import TreeView from '@/components/TreeView.vue';
export default {
name: 'TreeView',
components: {
TreeView
},
props: {
items: {
type: Array,
required: true
}
}
};
</script>

在这个例子中,我们定义了一个名为TreeView的组件。这个组件接收一个名为items的props,用来渲染菜单。我们使用v-for指令来遍历菜单项,如果当前项有子菜单,我们使用递归调用TreeView组件。