vue 递归组件的两种方法
app.vue <template> <div> <list :data="data"></list> <hr/> <render :data="data"></render> </div> </template> <script> import list from "./list.vue"; import render from "./render.vue"; export default { name: "App", components: { list, render }, data() { return { data: [ { id: 1, name: "1" }, { id: 2, name: "2", children: [ { id: 21, name: "21" ,children:[{ id: 211, name: "211" },{ id: 212, name: "212" }]}, { id: 22, name: "22" } ], }, { id: 3, name: "3", children: [ { id: 31, name: "31" }, { id: 32, name: "32" }, ], }, { id: 4, name: "4" }, { id: 5, name: "5" }, ], }; }, }; </script> <style lang="scss" scoped> </style> list.vue <template> <ul> <li v-for="item in data" :key="item.id"> {{item.name}} <list v-if="item.children" :data="item.children"></list> </li> </ul> </template> <script> export default { name:'list', props:{ data:{ type:Array, default(){ return [] } } }, } </script> <style lang="scss" scoped> </style> render.vue <script> export default { name: "Render", props: { data: { type: Array, default() { return []; }, }, }, render(h) { let items = []; if (this.data.length) { items = this.data.map((item) => { if (item.children) { return h("li", [ item.name, h("Render", { props: { data: item.children, }, } ), ] ); } else { return h("li", item.name); } }); } return h("ul", items); }, }; </script> <style lang="scss" scoped> </style>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探