首页 > 其他分享 >vue3 递归菜单组件

vue3 递归菜单组件

时间:2022-11-10 09:46:51浏览次数:45  
标签:遍历 递归 对象 菜单 vue3 组件

有一个需求,就是不知道菜单到底有多少级,需要按照层级一层层地遍历出来

递归实现的三个流程:

  1. 写函数
  2. 写遍历条件
  3. 设置终止条件

实现逻辑

  1. 父请求子组件,并且把列表值转给子组件
  2. 子组件遍历对象,发现有子对象就重新请求自己

具体代码:

<m-tree :options="state.stationList" :key="state.stationList"></m-tree> 
// state.stationList 对象值

tree.vue

<template>
    ...遍历代码
    // item.childlist && item.childlist.length 判断是否有子对象
    <ul v-show="!item.isOpened" v-if="item.childlist && item.childlist.length">
        <m-tree></m-tree>
    </ul>
    
</template>

<script setup>
   ...
   const newOptins = ref(props.options) // 重新赋值,以名污染原对象
</script>
<script>
export default {
  name: 'mTree' // 点击,这里必须export出去,否则不能递归
}
</script>

标签:遍历,递归,对象,菜单,vue3,组件
From: https://www.cnblogs.com/jscoffe/p/16876035.html

相关文章

  • python2 递归函数
    importosimportos.pathasospimportsysimportnumpyasnpimportdatetimedefmkdirs_py2(path):#递归创建文件夹路径ifosp.exists(path):return......
  • javascript基础知识之闭包和递归
    一,什么是闭包,会出现什么问题?如何避免?1、函数里面包含的子函数,子函数访问父函数的局部变量2、通过return将子函数暴露在全局作用域,子函数就形成闭包3、通过闭包,父函数的局......
  • 递归函数
    楔子在讲今天的内容之前,我们先来讲一个故事,讲的什么呢?从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呢?从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呢?从前有座山......
  • vue3-组合式api-provide/inject
    provide/inject适用于跨级通信,例如在父组件中改变值,在孙组件中通过依赖注入的方式能获取到父组件中改变的这个值一、父组件<template> <div>  <!--子组件-->......
  • vs code+uniapp+vue3+vite+typescript+pinia开发
    //–save-dev会把eslint安装到package.json文件中的devDependencies属性中,仅开发时用到,生产不需要npminstalleslint--save-dev//https://eslint.bootcss.co......
  • Part 4:Cocos2d-x开发实战-Cocos中的字符串、标签和菜单-关东升-专题视频课程
    Part4:Cocos2d-x开发实战-Cocos中的字符串、标签和菜单—17944人已学习课程介绍        介绍了Cocos2d-x文字和菜单相关知识,首选我们介绍了Cocos2d-x中的字符串,其......
  • 递归算5!
    递归  for循环 ......
  • 菜单绘制项的状态DrawItemEventArgs.state
    在学习之前先明白几个概念:一、NoAccelerator 没有键盘加速键,也就是俗称的“快捷键”;如,Ctrl+C,Ctrl+V等我们熟悉的快捷键就是键盘加速键;(可参照https://blog.csdn.net/u01......
  • 非递归程序时间复杂度计算
    单层时间复杂度计算一、设执行次数为t次二、列出每次执行变量i的值,如:for(inti=0;i<n;++i){...}三、找到执行第t次i的值,即i=f(t)(公式一)四、列出......
  • WPF禁用TextBox右键菜单
    WPF禁用TextBox右键菜单如此做<TextBoxGrid.Row="1"HorizontalAlignment="Right"VerticalAlignment="Bottom"Padding="0055"FontSize="12"x:Name="txtBoxHe......