首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Vue3 + TypeScript 实现递归菜单组件

周末在家闲着无聊,突然小弟过来紧急求助,说是面试腾讯的时候,对方给了个 Vue递归菜单要求实现,回来找我复盘。...正好这周是小周,没想着出去玩,就在家写写代码吧,我看了一下需求,确实是比较复杂,需要利用好递归组件,正好趁着这个机会总结一篇 Vue3 + TS 实现递归组件的文章。...实现 这很显然是一个递归组件的需求,在设计递归组件的时候,我们要先想清楚数据到视图的映射。...由于需求要求每一层的样式可能是不同的,所以再每次调用递归组件的时候,我们都需要从父组件的 props 中拿到一个 depth 代表层级,并且把这个 depth + 1 继续传递给递归的 NestMenu...,它负责递归的渲染子组件

1.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

Vue递归组件

如果没有结束点,递归将成为一个无限循环,但是如果一组规则就不能实现期望的行为,所以两者都存在才能使它正常工作。 递归Vue 组件Vue 中,递归非常有用。...当然,不仅仅在 Vue 中,咱们可以遵循上面的规则在任何框架中实现递归行为。因此,根据给定的定义,咱们可以说递归组件是调用自身的组件递归组件什么时候有用?...只要咱们需要使用相同的模板结构,但需要使用分层输入数据,就可以使用递归。 如果树状视图(用于显示文件夹结构),网站上的注释,嵌套菜单等组件等等。 接着,咱们建立一个场景来演示递归组件的用途。...root 组件将包含一个folder属性,咱们会把root数据对象绑定到该属性上。此属性将传递给子组件,子组件递归地创建基于它的文件夹树结构。...希望本文能够更好帮大家理解递归以及如何使用Vue创建递归组件

42710

Vue3 递归组件

---- 本文简介 点赞 + 关注 + 收藏 = 学会了 在日常 Vue 项目中,大概率会用组件库辅助开发,所以 递归组件 的出镜率可能不会非常高。但这并不代表 递归组件 不重要。...本文用10分钟左右的时间让你掌握 递归组件 的用法。 在此之前,你必须掌握:html + css + js + Vue3 基础用法,至少需要知道 Vue 组件 是什么。...看到这里,我相信大家是知道 Vue组件 是什么。 我先把 《Vue3 递归组件 文档》 放在这。 其实 递归组件 就是把 “递归” 和 “组件” 结合起来。...步骤如下: 创建导航组件 全局注册导航组件 获取数据(本例以学习为目的,所以在前端写死数据) 在导航组件中设置递归边界,并渲染数据 1、创建组件 我给导航组件命名为 RootNav.vue 。...但本文的目的是学习递归组件,所以就直接在前端模拟了一份 “请求回来的数据”。 我把 “请求数据” 的操作放在 App.vue 。然后再通过 props 的方式传入到 RootNav.vue 组件内。

93320

vue 递归组件使用示例

前文 我们需要做一个树形组件用来展示一些无限子级的数据时就要用到vue提供的递归组件 首页了解一下 vue 中 name属性 为什么 export 有name这个属性 name 类型:string...详细: 允许组件模板递归地调用自身。 注意,组件在全局用 Vue.component() 注册时,全局 ID 自动作为组件的 name。 指定 name 选项的另一个好处是便于调试。...有名字的组件有更友好的警告信息。另外,当在有 vue-devtools,未命名组件将显示成 ,这很没有语义。通过提供 name 选项,可以获得更有语义信息的组件树。...利用组件循环实现未知限制的数据展示 父级组件 通过这个组件来获取将要展示的无限级数据 tree-list 是用到的的递归组件 使用递归组件时需要给定一个结点 如 v-if=“item.child...: { handleConsole(item){ console.log(item.name, 'tree') }, }, } tree-list 是用来递归组件

2K20

Vue递归组件:渲染嵌套评论

这节课,我们来看看在Vue中如何使用递归组件来管理树状结构的数据。在介绍 Vue递归组件之前,我们先回顾一下什么是递归。...,但与Vue递归组件有什么联系?...Vue 递归组件 Vue中的组件是可重用的Vue实例。大多数时候,当我们在Vue中创建一个组件时,只是为了能在其他地方重用它。例如,一个电子商务网站,我们可以在多个页面上显示产品。...如果一个Vue组件在自己的模板中引用自己,那么它就被认为是递归的。递归组件与普通组件不同。除了在其他地方被重用之外,递归组件还在其模板中引用自己。 为什么一个组件会引用自己?...,但我们的目标是探索如何利用Vue递归组件的力量来渲染嵌套数据。

1.3K20

Vue基础:组件--slot、异步组件递归组件及其他

slot分发内容 为了让组件可以组合,我们需要一种方式来混合父组件的内容与子组件自己的模板。这个过程被称为内容分发。Vue中使用特殊的 元素作为原始内容的插槽。...异步组件 Vue.js 允许将组件定义为一个工厂函数,异步地解析组件的定义。...components: { myComponent: { /* ... */ } } 递归组件 一定要确保递归调用有终止条件,可以通过v-if进行控制。...递归组件示例:https://jsfiddle.net/381510688/nhhfL1bd/ 组件间的循环引用 参考官网地址:https://cn.vuejs.org/v2/guide/components.html...对低开销的静态组件使用v-once 尽管在 Vue 中渲染 HTML 很快,不过当组件中包含大量静态内容时,可以考虑使用 v-once将渲染结果缓存起来,就像这样: Vue.component('terms-of-service

1.7K41

Vue基础:组件--slot、异步组件递归组件及其他

slot分发内容 为了让组件可以组合,我们需要一种方式来混合父组件的内容与子组件自己的模板。这个过程被称为内容分发。Vue中使用特殊的 元素作为原始内容的插槽。...异步组件 Vue.js 允许将组件定义为一个工厂函数,异步地解析组件的定义。...components: { myComponent: { /* ... */ } } 递归组件 一定要确保递归调用有终止条件,可以通过v-if进行控制。...递归组件示例:https://jsfiddle.net/381510688/nhhfL1bd/ 组件间的循环引用 参考官网地址:https://cn.vuejs.org/v2/guide/components.html...对低开销的静态组件使用v-once 尽管在 Vue 中渲染 HTML 很快,不过当组件中包含大量静态内容时,可以考虑使用 v-once将渲染结果缓存起来,就像这样: Vue.component('terms-of-service

2.9K40

Typescript + Composition API 重构 Vue 3 组件

本文会将使用 JavaScript 和 Options API 构建的传统结构 Vue 3 组件,重构为使用 TypeScript 和 Composition API 的版本。...鉴于 Vue Test Utils 和 Jest 尚无对 Vue.js 3 组件的官方支持,该组件使用了 render 函数编写。为照顾对其不太熟悉的读者,我将其对应的 HTML 写在了注释里。...听说 VSCode 的 Vue 组件插件 “Vetur” 也为 Vue 3 进行了升级,在 中都能得到类型推断,这可真棒! 经过上面的改动,测试依然通过了。...Typescript vs. JavaScript 我感觉 TypeScript 初期的学习曲线可是有点高,但现在用 TS 写应用时我已经乐在其中。...总结 本文展示并讨论了: 渐进地向一个常规 JS 组件中添加类型 好的测试聚焦行为而非实现细节 TypeScript 的好处 Options API vs. Composition API 7.

1.4K30

Vue使用组件递归实现评论盖楼功能笔记

步骤: 1.在组件内设定 name 属性 2.使用这个 name 属性作为标签在组件自己的template里面渲染 3.注意为了避免死循环,需要指定终止条件 下面是一个vue脚手架创建的示例 如图: image.png...现在可以将这个组件引入到home中看看效果 image.png 就有了下图效果 image.png 2.用组件递归实现评论盖楼的功能 目标:将下面这段评论数据以楼层的形式渲染到页面 comments:..., user: "铁蛋", }, ] 2.1-用vue脚手架搭建一个基本的结构 创建两个组件: Comments:展示用户评论的组件 Floor:展示用户回复的用户评论...(即我们需要递归组件) image.png 2.2-在Home首页引入Comments组件,进行第一层评论数据渲染 image.png 2.3-Comments组件获取评论数据进行渲染 假设comments...Floor组件进行递归渲染这些数据,因为我们无法预知它一共有多少层 image.png 2.5-Floor组件接收Comments传递过来的数据,递归渲染 image.png 现在页面显示就是如下样式:

2.1K00

立等可取的 Vue + Typescript 函数式组件实战

TypeScript 对于函数式组件有何意义 无论是 React 还是 Vue,本身都提供了一些验证 props 类型的手段。...Vue 3 风格的 tsx 函数式组件 ?...有了 TypeScript 的强类型加持,组件内外的参数类型有了较好的保障。...函数式组件就是一个没有实例的组件,也称“无状态组件” 函数式组件渲染速度快,更易于实现条件性渲染和高阶特性 Vue 中的“函数式”组件基于可变数据,并非纯粹的函数式编程 TypeScript 可以更精确的定义和检查...props 类型,自动提示也更友好 可使用自定义的 TS 接口声明 Vue FC 的 props 结构 Vue 函数式组件可以与 Composition API 结合使用 对 Vue 函数式组件进行单元测试时需要注意渲染触发问题

2.2K20

vue-cli 3.0 下发布一个 TypeScript 组件

vue-cli 发布在即,TypeScript 也日益普及,于是借此机会,将以前写过的一个插件 vue-loading-template 用 TypeScript 重构,并添加一些实用的功能。...在没改写成 TypeScript 之前,我们可以把 options 值赋给组件的 props: const install = ( vue, options ) => { if (options...('vue-loading', VueLoading) } 复制代码 改写为 TypeScript 组件之后(实际上是通过 Vue.extend 定义的 Vue 子类),并不能直接获取组件的 props...图一,是普通组件导出形式, 图二,是使用 Vue.extend() 形式导出的子类组件。 使用子类组件时,需要实例化:new VueLoading()。...是的,特别是当改变组件 default props 时(使用 Vue.extend() 导出的组件是一个构造器)。

1.5K20

Vue一个案例引发的递归组件的使用

今天我们继续使用 Vue 的撸我们的实战项目,只有在实战中我们才会领悟更多,光纸上谈兵然并卵,继上篇我们的《Vue一个案例引发的动态组件与全局事件绑定总结》 之后,今天来聊一聊我们如何在项目中使用递归组件...这里就要用到我们说的 递归组件 了,无论你的数据怎么增加我们都不用改动我们的代码。 递归组件 什么是递归组件?...简单来说就是在组件中内使用组件本身,下面我们就来看看如何在项目中使用递归组件去解决我们上面问题。...首先我们先创建一个 List 的递归组件 <div class="list-item" v-for="(item, index) in list...总结 如上就是我们今天要说的<em>递归</em><em>组件</em>,小伙伴们赶紧上手试试吧。 类似与信息分类的展示在我们的项目中是非常常见的形式,我们利用<em>递归</em><em>组件</em>可以很好的去解决问题 文中如有不足之处,欢迎大神留言,拍砖!

1.4K20

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券