Vue.js中如何利用递归组件实现一个可折叠的树形菜单
这篇文章主要介绍"Vue.js中如何利用递归组件实现一个可折叠的树形菜单"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Vue.js中如何利用递归组件实现一个可折叠的树形菜单"文章能帮助大家解决问题。
在Vue.js中一个递归组件调用的是其本身,如:
Vue.component('recursive-component', { template: `` });
递归组件常用于在blog上显示注释、嵌套的菜单,或者基本上是父和子相同的类型,尽管具体内容不同。例如:
现在给您演示一下如何有效地使用递归组件,我将通过建立一个可扩展/收缩的树形菜单的来一步步进行。
数据结构
一个树状UI的递归组件将是一些递归数据结构的可视化表达。在本教程中,我们将使用树状结构,其中每个节点都是一个对象:
一个 label 属性。
如果它有子节点,一个 nodes 属性,则它是一个或多个节点的数组属性。
与所有树结构一样,它必须有一个根节点,但可以无限深。
let tree = { label: 'root', nodes: [ { label: 'item1', nodes: [ { label: 'item1.1' }, { label: 'item1.2', nodes: [ { label: 'item1.2.1' } ] } ] }, { label: 'item2' } ] }
递归组件
让我们做一个递归组件来显示我们的称为 TreeMenu 的数据结构。它只显示当前节点的标签,并调用自己来显示任何子节点。文件名:TreeMenu.vue,内容如下:
如果你使用一个组件递归,必须先给 Vue.component 做一个全局的定义,或者,给它一个 name 属性。否则,任何子组件将无法进一步调用它,你会得到一个不确定的" undefined component error "的错误提示。
基本事件
与任何递归函数一样,你需要一个基本事件来结束递归,否则渲染将无限期地继续下去,最终会导致堆栈溢出。
在树菜单中,当我们到达一个没有子节点的节点的时候,我们希望停止递归。你能通过 v-if 做到这一功能,但我们选择使用 v-for 将隐式地为我们实现它;如果 nodes 数组没有任何进一步的定义 tree-menu 组件将被调用。 template.vue 文件如下:
组件 递归 节点 结构 属性 数据 数据结构 菜单 树形 文件 事件 内容 模板 知识 不同 数组 方法 标签 用户 类型 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 国产软件开发工具有哪些 无处不在的网络安全宣传 服务器稳定性有多大 明日之后莱文市的服务器 传本地文件到服务器 英语作文网络安全计划 ssm框架连接数据库 新吴区软件开发工具怎么样 重庆直播软件开发运营需要多少钱 河北专业网络技术咨询报价 农信社网络安全主题征文 智联网络技术有限公司 天津 崇明区营销软件开发代理商 合肥网络安全大会2018 软件开发可以用哪些编程语言 超难度网络安全手抄报高中 服务器阵列卡坏了会怎么样 IPD流程适合软件开发吗 Springboot数据库默认字段为空 数据服务器或机房的安全 css 服务器端字体 为什么要使用数据库管理技术 用友财务软件数据库完整正式版 人工神经网络技术是 云平台软件开发技术 hpc 服务器 pc虚拟摄像头软件开发 深圳立创软件开发有限公司 搭建ssr国外服务器推荐 新西兰 软件开发