Vue3+elementPlus组件递归

这篇具有很好参考价值的文章主要介绍了Vue3+elementPlus组件递归。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

下面以实现导航菜单为例

1、父页面:

<template>
  <div class="vuecontainer">
    <!--  导航-->
    <el-menu
      :default-active="activeIndex"
      class="el-menu-demo"
      mode="horizontal"
      background-color="#1874cd"
      text-color="#fff"
      active-text-color="#ffd04b"
      @select="handleSelect"
    >
      <template v-for="(item, i) in idxTree" :key="i">
        <IdxNav :list="item"></IdxNav>
      </template>
    </el-menu>
</template>
<script setup lang="ts">
import {ref, reactive, onMounted, nextTick} from 'vue'
import IdxNav from './idxNav'


const activeIndex = ref('1')
const handleSelect = (key: string, keyPath: string[], item: Object) => {
  // do Something
}

const idxTree = ref([
  {
    "id": "11111111111111111111111111111111",
    "name": "一级菜单",
    "label": "一级菜单",
    "parentId": "999999999999999999999999999",
    "type": "0",
    "dataType": null,
    "idxRange": null,
    "children": [
      {
        "id": "22222222222222222222222222222222",
        "name": "L哈哈",
        "label": "L哈哈",
        "parentId": "11111111111111111111111111111111",
        "type": "0",
        "dataType": null,
        "idxRange": null,
        "children": [
          {
            "id": "33333333333333333",
            "name": "天数",
            "label": "天数",
            "parentId": "22222222222222222222222222222222",
            "type": "1",
            "dataType": "0",
            "idxRange": "3",
            "children": null
          },
          {
            "id": "333333333333333",
            "name": "月数",
            "label": "月数",
            "parentId": "22222222222222222222222222222222",
            "type": "1",
            "dataType": "0",
            "idxRange": "3",
            "children": null
          }
        ]
      },
      {
        "id": "384fe7a5384fe7a5384fe7a5384fe7a5",
        "name": "车站",
        "label": "车站",
        "parentId": "11111111111111111111111111111111",
        "type": "0",
        "dataType": null,
        "idxRange": null,
        "children": [
          {
            "id": "855bf0e9-aacc-40de-b05e-fa854d8135fe",
            "name": "入口数",
            "label": "入口数",
            "parentId": "384fe7a5384fe7a5384fe7a5384fe7a5",
            "type": "1",
            "dataType": "0",
            "idxRange": "3",
            "children": null
          }
        ]
      }
    ]
  }
]);
</script>

2、递归组件:文章来源地址https://www.toymoban.com/news/detail-845589.html

<template>
  <template v-if="list.children && list.children !=null">
    <el-sub-menu :index="list.id">
      <template #title>
        <el-icon>
          <Expand/>
        </el-icon>
        <span>{{ list.name }}</span>
      </template>
      <template v-for="(item, i) in list.children">
        <IdxNav :list="item"></IdxNav>
      </template>
    </el-sub-menu>
  </template>
  <template v-else>
    <el-menu-item :index="list.id">
      <template #title>
        <el-icon>
          <Expand/>
        </el-icon>
        <span>{{ list.name }}</span>
      </template>
    </el-menu-item>
  </template>
</template>
<script setup lang="ts">
import IdxNav from './idxNav.vue'
import {Expand, Fold} from '@element-plus/icons-vue';
import {toRefs, defineProps} from 'vue';

const props = defineProps({
  list: {
    type: Object,
    default: () => {
    }
  }
})
const {list} = toRefs(props)
</script>
<style scoped lang="scss">
[data-popper-placement=right-start] .el-menu--popup-container .el-menu--popup .el-menu-item {
  color: #606266;
}
[data-popper-placement=right-start] .el-menu--popup-container .el-menu--popup .el-menu-item.is-active {
  color: #ffd04b;
  background-color: #1874cd;
}
</style>

到了这里,关于Vue3+elementPlus组件递归的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SSM(Vue3+ElementPlus+Axios+SSM前后端分离)--搭建Vue 前端工程[二]

    需求分析 效果图 思路分析 使用Vue3+ElementPlus 完成。 代码实现 修改ssm_vuesrcApp.vue 成如下形式, 会删除部分用不上的代码,增加 修改ssm_vuesrcviewsHomeView.vue , 删除ssm_vuesrccomponentsHelloWorld.vue 创建ssm_vuesrccomponentsHeader.vue 修改ssm_vuesrcApp.vue , 引入Header 组件 创建全局的global

    2024年02月13日
    浏览(33)
  • vue3后台管理系统实现动态侧边导航菜单管理(ElementPlus组件)

    记住 一级(el-sub-menu)的都是只是展示的 点击跳转的都是一级下的子级(el-menu-item) 完整展示 1:在登陆功能进行登陆 获取menu列表 注册路由表的时候 把文件进行创建好 因为注册的方法需要获取这个路径 整个router下的main product等等都要创建 2:侧边菜单界面 router/index.ts

    2024年02月16日
    浏览(39)
  • vue3+elementplus基于el-table-v2封装公用table组件

    主要是针对表格进行封装,不包括查询表单和操作按钮。 梳理出系统中通用表格的功能项,即表格主体的所有功能,生成columns列头数据、生成data表体数据、拖拉列宽、分页、生成中文列名、自定义列宽width 效果如下: 父级引用: 父组件: 子组件: 子组件: 父组件: 以上

    2024年02月10日
    浏览(49)
  • vue3+elementPlus:前端自定义el-tree图标icon

    重点:template蒙版下svg和use,然后前端遍历添加key和value,取判断放图标 HTML结构:el-tree里面包裹template(关键点) 方法一:使用for循环 for循环数据,前端自定义tree图标第一种方法,后端key没有icon字段,自己添加 方法二: 使用map遍历 直接map遍历前端自定义tree图标 作者上一

    2024年02月15日
    浏览(34)
  • 后端“fastapi”+前端“vue3+ts+ElementPlus”上传文件到uploads目录

    确保已安装好python3和fastapi mail.py 运行fastapi服务器 使用浏览器访问 http://127.0.0.1:8000/http://127.0.0.1:8000/docs 确保已安装node.js和yarn 使用vite初始化前端目录  安装element-plus main.ts中导入element-plus  修改vite.config.ts配置“CORS 跨域” 修改App.vue 运行 使用浏览器访问 http://127.0.0.1:70

    2024年02月22日
    浏览(36)
  • vue3+elementplus点击按钮使用el-image-viewer图片预览组件

    1.首先确保你是全局引入,不是全局的需要自主引入该组件 2..vue文件中定义组件 3. showsrcListref:[\\\'\\\']格式 4.点击按钮给showsrcListref赋值即可完成,同时将showImagePreview置为true

    2024年01月18日
    浏览(53)
  • vue3——递归组件的使用

    该文章是在学习 小满vue3 课程的随堂记录 示例均采用 script setup ,且包含 typescript 的基础用法 递归组件 的使用场景,如 无限级的菜单 ,接下来就用菜单的例子来学习 先把菜单的基础内容写出来再说 父组件 子组件 如图,上述代码已经完成了 第一层 菜单数据的渲染: 深层

    2024年02月11日
    浏览(27)
  • vue3 组件自己引用自己 递归组件 组件命名

    本人前端开发一枚,以前一直用vue2.0,为了更新自己掌握的技术学习如何使用vue3.0。 在vue3.0项目中想要实现菜单组件,要使用到递归组件的方法,发现不知道怎么给组件重命名!! 在vue2.0中想要实现递归组件方式很简单,只要给组件命名,然后自己调用即可: 然而在vue3.0中

    2024年02月06日
    浏览(37)
  • axios 实战进阶练习——基于 Vue3 + Node.js + ElementPlus 实现的联系人列表管理后台

    书接上回,上一篇文章介绍了一个基于 Vue3 和 ElementPlus 的联系人列表管理后台小 demo (Vue3 + ElementPlus实战学习——模拟简单的联系人列表管理后台),在有了上一篇文章的基础上,我们试着用 axios 来获取数据,而不是用写死的数据,然后用 Node.js + Vue3 + ElementPlus 来实现联系

    2024年02月10日
    浏览(38)
  • axios实战进阶练习——基于 Vue3 + Node.js + ElementPlus 实现的联系人列表管理后台

    书接上回,上一篇文章介绍了一个基于 Vue3 和 ElementPlus 的联系人列表管理后台小 demo (Vue3 + ElementPlus实战学习——模拟简单的联系人列表管理后台),在有了上一篇文章的基础上,我们试着用 axios 来获取数据,而不是用写死的数据,然后用 Node.js + Vue3 + ElementPlus 来实现联系

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包