iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue3+ts实现树形组件(菜单组件)
  • 386
分享到

vue3+ts实现树形组件(菜单组件)

vue3ts树形组件vue3ts菜单组件 2023-05-18 20:05:33 386人浏览 薄情痞子
摘要

目录前言全局注册组件组件的实现树形组件的基本结构:完善组件(添加点击事件,过渡效果)✌️✌️添加过渡总结:前言 之前在使用element-plus的使用,使用el-menu组件,并且

前言

之前在使用element-plus的使用,使用el-menu组件,并且使用了递归思想完成了无限极菜单的展开,现在想要自己手写一个简单的树形组件,同样使用递归的思想

lv_0_20230503231408.gif

全局注册组件

文件结构:

---mTree
  ---index.ts
  ---mTree.Vue

在index.ts文件中引入组件然后注册,并最后在main.ts文件中引入并且使用app.use

import  mTree  from "./mTree.vue"
mTree.install = app => {
   app.component(mTree.name,mTree)
}
export default mTree

组件的实现

首先我们先要创建一个树状的数据,分清楚层级关系

const state = Reactive({
  treeOptions: [
    {
      label: '一级',
      children: [
       ...
        {
          label: '一级-3',
          children: [
            ....
          ],
        },
      ],
    },
   ...
})

就像这样的层级关系,当然这里面我们只是模拟数据,真实的项目开发过程中应该是后端前端数据,然后前端在根据数据进行渲染

树形组件的基本结构:

<template>
  <li v-for="item in options"
      :key="item.label">
    {{ item.label }}
      <ul  v-if="item.children&&item.children.length>0">
        <mTree :options="item.children"></mTree>
      </ul>
  </li>
​
</template>

如图:

image-20230503224718357.png

解释一下这个组件的这个结构:

首先使用li组件渲染第一层结构,然后在ul里面重新嵌套mTree树形组件,并且判断当前item元素是否有children属性,如果有这个属性,那么就进行渲染,否则的话就不渲染。这样就不停的递归,到最后一个children都渲染结束之后结束了。这样在不确定有多少层级时就可以使用,可以实现无限的层级嵌套。

完善组件(添加点击事件,过渡效果)✌️✌️

<li v-for...
      @click.stop="toggleisOpen(item)">
    {{ item.label }}
    <transition name="slide-fade">
      <ul v-show="item.isOpen">...</ul>
    </transition>
  </li>

这里只展示了新增的代码,给li添加了一个点击事件:

interface optionsProp {
  label: string
  isOpen?: boolean
  children?: optionsProp[]
}
const props = defineProps({
  options: {
    type: Array as PropType<optionsProp[]>,
    default() {
      return []
    },
  },
})
const toggleisOpen = (item: any) => {
  item.isOpen = !item.isOpen
}

注意ul通过v-show来控制显示或者隐藏,当第一次点击的时候由于源数据中没有isOpen,所以这个时候取反就是true,就会显示点击元素的子级。还有一点要注意的时,由于冒泡会导致出现一些问题,所以在点击事件后面加上.stop来阻止冒泡。

添加过渡

这里我们使用了vue3官方中的过渡,不是很了解的小伙伴可以去官网查看,简单来说就是使用transition包裹要使用过渡效果的部分,然后定义name属性,本文中的name为slide-fade所以下面的样式就是这样的:

  • v-enter-from:进入动画的起始状态。
  • v-enter-active:进入动画的生效状态。
  • v-leave-active:离开动画的生效状态
  • v-leave-to:离开动画的结束状态。
.slide-fade-enter-active {
  transition: all 0.3s ease-out;
}
​
.slide-fade-leave-active {
  transition: all 0.2s cubic-bezier(1, 0.5, 0.8, 1);
}
​
.slide-fade-enter-from,
.slide-fade-leave-to {
  transfORM: translateY(20px);
  opacity: 0;
}

总结:

通过对这个组件的实现,我们有掌握了对递归组件的使用以及简单的实现,学习的时候可以对自己好奇的东西尝试自己去实现,这样做我们可以学习的更快,并且使自己有一些小小的成就感。

到此这篇关于vue3+ts实现树形组件(菜单组件)的文章就介绍到这了,更多相关vue3 ts树形组件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: vue3+ts实现树形组件(菜单组件)

本文链接: https://www.lsjlt.com/news/212432.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue3+ts实现树形组件(菜单组件)
    目录前言全局注册组件组件的实现树形组件的基本结构:完善组件(添加点击事件,过渡效果)✌️✌️添加过渡总结:前言 之前在使用element-plus的使用,使用el-menu组件,并且...
    99+
    2023-05-18
    vue3 ts 树形组件 vue3 ts菜单组件
  • Vue组件tree如何实现树形菜单
    这篇文章主要为大家展示了“Vue组件tree如何实现树形菜单”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue组件tree如何实现树形菜单”这篇文章吧。vue...
    99+
    2024-04-02
  • Vue2递归组件如何实现树形菜单
    小编给大家分享一下Vue2递归组件如何实现树形菜单,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果如下图,点击后打开二级菜单,...
    99+
    2024-04-02
  • Vue3 通过作用域插槽实现树形菜单嵌套组件
    目录一、需求来源二、效果图三、使用示例(VTreeNodeDemo.vue)四、源码(VTreeNode.vue):一、需求来源 工作中需要一种树形菜单组件,经过两天的构思最终通过...
    99+
    2023-01-28
    Vue3 树形菜单嵌套组件 Vue 作用域插槽
  • 怎么使用Vue组件tree实现树形菜单
    本篇内容主要讲解“怎么使用Vue组件tree实现树形菜单”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Vue组件tree实现树形菜单”吧!vue 编写的树形菜单,小巧实用,支持vue1....
    99+
    2023-07-04
  • Vue2组件tree如何实现无限级树形菜单
    小编给大家分享一下Vue2组件tree如何实现无限级树形菜单,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!How to run ...
    99+
    2024-04-02
  • 怎么使用Vue递归组件实现树形菜单
    本文小编为大家详细介绍“怎么使用Vue递归组件实现树形菜单”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Vue递归组件实现树形菜单”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果如下图,点击后打开二级...
    99+
    2023-07-04
  • vue3中的伸缩菜单组件
    目录vue3伸缩菜单组件效果图总结vue3伸缩菜单组件 最近一直在学习分装组件,学到了一个伸缩菜单栏组件,浅浅的记录一下,想要封装菜单的,代码可以直接拿去用,稍作修改即可! 效果图 ...
    99+
    2023-01-14
    vue3伸缩菜单组件 vue3伸缩菜单 vue3组件
  • vue递归实现树形组件
    本文实例为大家分享了vue递归实现树形组件的具体代码,供大家参考,具体内容如下 1. 先来看一下效果: 2. 代码部分 (myTree.vue) 图片可以自己引一下自己的图片,或者...
    99+
    2024-04-02
  • 如何使用Vue递归组件构建树形菜单
    今天小编给大家分享一下如何使用Vue递归组件构建树形菜单的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在Vue.js中一个递...
    99+
    2023-07-04
  • Vue+Elementui实现树形控件右键菜单
    本文实例为大家分享了Vue+Element ui实现树形控件右键菜单的具体代码,供大家参考,具体内容如下 需求 实现树形控件右键菜单功能,有添加文件、删除文件、重命名功能 一、按需引...
    99+
    2024-04-02
  • JavaScript树形组件实现无限级树形结构
    目录​一、问题研究的背景和意义​​二、详细设计方案​​三、源代码实现(Java版)​​四、思考与总结​(1)XML层次结构(2)UL-LI层次结构(3)TABLE层次结构​一、问题研...
    99+
    2024-04-02
  • vue递归组件之如何实现简单树形控件
    这篇文章主要介绍vue递归组件之如何实现简单树形控件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、递归组件-简单树形控件预览及问题 在编写树形组件时遇到的问题:组件如何...
    99+
    2024-04-02
  • Vue3+TypeScript实现递归菜单组件的完整实例
    目录前言 需求 实现 首次渲染 点击菜单项 样式区分 默认高亮 数据源变动引发的 bug 完整代码 App.vue 总结 前言 小伙伴们好久不见,最近刚入职新公司,需求排的很满,平...
    99+
    2024-04-02
  • 如何使用vue3+TS实现简易组件库
    这篇文章主要为大家展示了“如何使用vue3+TS实现简易组件库”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用vue3+TS实现简易组件库”这篇文章吧。前置首先下载vue-cli,搭建我们...
    99+
    2023-06-29
  • Vue.js中怎么利用递归组件构建树形菜单
    本篇文章给大家分享的是有关Vue.js中怎么利用递归组件构建树形菜单,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在Vue.js中一个递归组件...
    99+
    2024-04-02
  • Vue实现嵌套菜单组件
    本案例为大家分享了Vue实现嵌套菜单组件的具体代码,供大家参考,具体内容如下 本文旨在使用Vue.js完成一个嵌套的菜单组件,使用mock.js对数据进行模拟,并且最小化复现功能 ...
    99+
    2024-04-02
  • Vue下如何用递归组件实现一个可折叠的树形菜单
    这篇文章主要介绍“Vue下如何用递归组件实现一个可折叠的树形菜单”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue下如何用递归组件实现一个可折叠的树形菜单”文章能帮助大家解决问题。在Vue.js中...
    99+
    2023-07-04
  • vue递归组件实现树形结构
    本文实例为大家分享了vue递归组件实现树形结构,供大家参考,具体内容如下 一、递归组件 什么是递归组件?简单来说就是在组件中内使用组件本身。函数自己调用自己。很多情况下我们呢刷数据的...
    99+
    2024-04-02
  • Vue.js中怎么利用递归组件实现一个可折叠的树形菜单
    本篇文章给大家分享的是有关Vue.js中怎么利用递归组件实现一个可折叠的树形菜单,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在Vue.js中...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作