在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组件。