是指在Vue框架中使用TypeScript编写的组件,该组件可以递归调用自身。递归组件在处理树状结构数据或需要无限嵌套组件的场景中非常有用。
优势:
应用场景:
推荐的腾讯云相关产品:
更多产品介绍和详细信息,请访问腾讯云官网:
周末在家闲着无聊,突然小弟过来紧急求助,说是面试腾讯的时候,对方给了个 Vue 的递归菜单要求实现,回来找我复盘。...正好这周是小周,没想着出去玩,就在家写写代码吧,我看了一下需求,确实是比较复杂,需要利用好递归组件,正好趁着这个机会总结一篇 Vue3 + TS 实现递归组件的文章。...实现 这很显然是一个递归组件的需求,在设计递归组件的时候,我们要先想清楚数据到视图的映射。...由于需求要求每一层的样式可能是不同的,所以再每次调用递归组件的时候,我们都需要从父组件的 props 中拿到一个 depth 代表层级,并且把这个 depth + 1 继续传递给递归的 NestMenu...,它负责递归的渲染子组件。
一、建一个.vue的子组件 <li v-for="(item,index) in treeData...) { return { }; }, methods: { handleClick(){ console.log("最底层级") } } } 二、父组件使用.../digui.vue" 数据结构 treeData:[ { name:"名称11" }, {
Vue递归组件 1、递归组件 2、实例 1、递归组件 组件可以在自己的模板种递归调用自身,但这需要使用name选项为组件指定一个内部调用的名称。...当调用Vue.createApp({}).component({})全局注册组件时,这个全局的ID会自动设置为该组件的name选项。 ...递归组件和程序语言中的递归函数调用一样,都需要有一个条件结束递归,否则就会导致无限循环。例如,可以通过v-if指令(表达式计算为假时)结束递归。...category-component :list="categories"> <script src="https://unpkg.com/<em>vue</em>..., { name: '前端框架', children: [ {name: '<em>Vue</em>.js
如果没有结束点,递归将成为一个无限循环,但是如果一组规则就不能实现期望的行为,所以两者都存在才能使它正常工作。 递归和 Vue 组件 在 Vue 中,递归非常有用。...当然,不仅仅在 Vue 中,咱们可以遵循上面的规则在任何框架中实现递归行为。因此,根据给定的定义,咱们可以说递归组件是调用自身的组件。 递归组件什么时候有用?...只要咱们需要使用相同的模板结构,但需要使用分层输入数据,就可以使用递归。 如果树状视图(用于显示文件夹结构),网站上的注释,嵌套菜单等组件等等。 接着,咱们建立一个场景来演示递归组件的用途。...root 组件将包含一个folder属性,咱们会把root数据对象绑定到该属性上。此属性将传递给子组件,子组件将递归地创建基于它的文件夹树结构。...希望本文能够更好帮大家理解递归以及如何使用Vue创建递归组件。
---- 本文简介 点赞 + 关注 + 收藏 = 学会了 在日常 Vue 项目中,大概率会用组件库辅助开发,所以 递归组件 的出镜率可能不会非常高。但这并不代表 递归组件 不重要。...本文用10分钟左右的时间让你掌握 递归组件 的用法。 在此之前,你必须掌握:html + css + js + Vue3 基础用法,至少需要知道 Vue 组件 是什么。...看到这里,我相信大家是知道 Vue组件 是什么。 我先把 《Vue3 递归组件 文档》 放在这。 其实 递归组件 就是把 “递归” 和 “组件” 结合起来。...步骤如下: 创建导航组件 全局注册导航组件 获取数据(本例以学习为目的,所以在前端写死数据) 在导航组件中设置递归边界,并渲染数据 1、创建组件 我给导航组件命名为 RootNav.vue 。...但本文的目的是学习递归组件,所以就直接在前端模拟了一份 “请求回来的数据”。 我把 “请求数据” 的操作放在 App.vue 。然后再通过 props 的方式传入到 RootNav.vue 组件内。
typescript 简介 TypeScript 是 JavaScript 的强类型版本。然后在编译期去掉类型和特有语法,生成纯粹的 JavaScript 代码。...TypeScript 是 JavaScript 的超集,这意味着他支持所有的 JavaScript 语法。...与此同时,TypeScript 也是 JavaScript ES6 的超集,Google 的 Angular 2.0 也宣布采用 TypeScript 进行开发。...概览 Vue 类组件是一个库,可让你使用类的语法制作 Vue 组件。例如,我们可以使用 Vue 类语法制作一个计算器组件: 在 src/components 新建 Counter.vue。...混入 Vue类组件提供了mixins辅助功能,以类样式方式使用mixins。通过使用mixins帮助程序,TypeScript可以推断混合类型并在组件类型上继承它们。
前文 我们需要做一个树形组件用来展示一些无限子级的数据时就要用到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 是用来递归的组件
递归组件的应用===》可以通过组件命名来自己使用自己的组件 实例如下 父组件 子组件 //自己使用自己的组件... export default { name:'DetailList', //组件命名1K20
这节课,我们来看看在Vue中如何使用递归组件来管理树状结构的数据。在介绍 Vue 中递归组件之前,我们先回顾一下什么是递归。...,但与Vue的递归组件有什么联系?...Vue 递归组件 Vue中的组件是可重用的Vue实例。大多数时候,当我们在Vue中创建一个组件时,只是为了能在其他地方重用它。例如,一个电子商务网站,我们可以在多个页面上显示产品。...如果一个Vue组件在自己的模板中引用自己,那么它就被认为是递归的。递归组件与普通组件不同。除了在其他地方被重用之外,递归组件还在其模板中引用自己。 为什么一个组件会引用自己?...,但我们的目标是探索如何利用Vue中递归组件的力量来渲染嵌套数据。
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
$emit('input',val); } } }; // 创建vue实例对象 const app = new Vue({ el: '#app', data: { name: '' },...components: { MyComponent } }); 动态组件,动态地切换组件的显示内容,多个组件可以使用同一个挂载点。...const C1Component = { template: '#c1' }; const C2Component = { template: '#c2' }; // vue实例对象 const...app = new Vue({ el: '#app', data: { currentComponent: 'C1Component' }, components: { C1Component..., C2Component, } }); 递归组件,需要有一个结束的判断,否则就会一直循环。
什么是递归函数? 递归函数就是⼀个函数在它的函数体内调⽤函数⾃⾝。执⾏递归函数将反复调⽤其⾃⾝,每调⽤⼀次就进⼊新的⼀层。 注意 : 递归函数必须有结束条件,否则将陷入死循环。
本文会将使用 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.在组件内设定 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 现在页面显示就是如下样式:
❓TypeScript 对于函数式组件有何意义 无论是 React 还是 Vue,本身都提供了一些验证 props 类型的手段。...Vue 3 风格的 tsx 函数式组件 ?...有了 TypeScript 的强类型加持,组件内外的参数类型有了较好的保障。...函数式组件就是一个没有实例的组件,也称“无状态组件” 函数式组件渲染速度快,更易于实现条件性渲染和高阶特性 Vue 中的“函数式”组件基于可变数据,并非纯粹的函数式编程 TypeScript 可以更精确的定义和检查...props 类型,自动提示也更友好 可使用自定义的 TS 接口声明 Vue FC 的 props 结构 Vue 函数式组件可以与 Composition API 结合使用 对 Vue 函数式组件进行单元测试时需要注意渲染触发问题
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() 导出的组件是一个构造器)。
/components/menuItem.vue" import { useRoute } from "vue-router" const route = useRoute() const menuList...= [ { path: "/index", component: () => import("@/views/index.vue"), name...level-1/level-1-1", component: () => import("@/views/level/level-1/level-1-1.vue...path: "/level/level-2", component: () => import("@/views/level/level-2.vue... import { Aim } from '@element-plus/icons-vue
今天我们继续使用 Vue 的撸我们的实战项目,只有在实战中我们才会领悟更多,光纸上谈兵然并卵,继上篇我们的《Vue一个案例引发的动态组件与全局事件绑定总结》 之后,今天来聊一聊我们如何在项目中使用递归组件...这里就要用到我们说的 递归组件 了,无论你的数据怎么增加我们都不用改动我们的代码。 递归组件 什么是递归组件?...简单来说就是在组件中内使用组件本身,下面我们就来看看如何在项目中使用递归组件去解决我们上面问题。...首先我们先创建一个 List 的递归组件 <div class="list-item" v-for="(item, index) in list...总结 如上就是我们今天要说的<em>递归</em><em>组件</em>,小伙伴们赶紧上手试试吧。 类似与信息分类的展示在我们的项目中是非常常见的形式,我们利用<em>递归</em><em>组件</em>可以很好的去解决问题 文中如有不足之处,欢迎大神留言,拍砖!
今天我们继续使用 Vue 的撸我们的实战项目,只有在实战中我们才会领悟更多,光纸上谈兵然并卵,继上篇我们的《Vue一个案例引发的动态组件与全局事件绑定总结》 之后,今天来聊一聊我们如何在项目中使用递归组件...这里就要用到我们说的 **递归组件** 了,无论你的数据怎么增加我们都不用改动我们的代码。 递归组件 什么是递归组件?...**简单来说就是在组件中内使用组件本身**,下面我们就来看看如何在项目中使用递归组件去解决我们上面问题。...首先我们先创建一个 List 的递归组件 <div class="list-item" v-for="(item, index) in list...类似与信息分类的展示在我们的项目中是非常常见的形式,我们利用<em>递归</em><em>组件</em>可以很好的去解决问题 文中如有不足之处,欢迎大神留言,拍砖! [guanzhu1.png]
领取专属 10元无门槛券
手把手带您无忧上云