当前位置: 首页 > news >正文

Vue 组件循环 简单应用及使用要点

目录

一、问题

二、实现方式

三、总结


 

一、问题

1.有一个列表,列表里面还嵌套了子元素,子元素的结构和父元素的DOM结构相似

2.有可能多次循环

 

二、实现方式

1.思路: 直接循环引用当前组件

2. 为了区分不同层次的标签,希望能够给不同层次的标签添加 不同的样式。

        1)如何区分不同循环层次的DOM呢?

         level: 每循环一次加一,就可以记录 循环的深度。 可以自己设置不同深度的样式

        2)如何从外部传递 样式,并且把第 n 层级的labelClass传递给 第n+1 层级呢

        labelClass标志第n层级的样式, 在循环中使用 props传参方式传递. 所有的层级都可以 通过 item.labelClass取到 对应的样式

3. 数据结构 

 [{name: '数据类型',value: '订单信息',labelClass: 'text-blue-500',children: [{name: '订单ID',value: '123',},{name: '商家名称',value: 'test',labelClass: 'text-yellow-500',children: [{name: '商家门店',value: '门店1,门店2,门店3',},],},{name: '药店名称',value: 'test药店',},],},]

4.具体代码

<template><div v-for="item in listData" :key="item.name" class="mb-6px flex text-[14px] text-1a1a1a"><span class="w-70px shrink-0 text-808080" :class="[labelClass || '']">{{ item.name }}</span><template v-if="item.children"><div class="grid"><List :key="item.name" :list-data="item.children" :level="level + 1" :label-class="item.labelClass || ''"></List></div></template><template v-else><text-ellipsis rows="2" class="grow text-1a1a1a" expand-text="展开" collapse-text="收起" :content="item.value" /></template></div>
</template>
<script setup lang="ts">
import { TextEllipsis } from 'vant'
import List from './List.vue'
import { ref } from 'vue'
interface ListDataItem {name: stringvalue?: stringlabelClass?: stringchildren?: ListDataItem[]
}
defineProps<{ listData: ListDataItem[]; labelClass?: string }>()const level = ref(1)
</script>

5. 最终效果

三、总结

1. 组件循环的用途DOM结构呈现递归嵌套结构(需要多个v-for嵌套渲染,但是每次渲染的dom都差不多),可以方便的实现渲染,不需要多次使用v-for重复嵌套渲染

2.组件循环的要点

        1)确定循环的条件:此处为children属性是否存在,保证循环可以正常终止

        2)循环组件区分不同循环层级props传参,循环时修改参数以便知道不同的层级

3.其实没有什么特别的,和正常的父子组件使用差不多,只不过现在父子组件都是同一个而已,传参和接参写在一起

 

/*

希望对你有帮助!

如有错误,欢迎指正,谢谢!

*/

 

http://www.dtcms.com/a/355155.html

相关文章:

  • 算法加训 动态规划熟悉30题 ---下
  • 【ARM】MDK出现:Unable to find ARM libraries
  • ros2与gazebo harmonic机械臂仿真项目Moveit2YoloObb的优化
  • Linux 禁止 su 的几种限制手段:从 NoNewPrivileges 到 PAM 配置
  • Linux shell getopts 解析命令行参数
  • CRMEB小程序订阅消息配置完整教程(PHP版)附常见错误解决
  • 【论文阅读】PEPNet
  • 6.10 vue3 的nextclick
  • More Effective C++ 条款14:审慎使用异常规格(Exception Specifications)
  • 19、大数据处理系统分析与设计
  • [特殊字符] 监控体系里常见的角色
  • Python绝对引用与相对引用的核心差异
  • 架构评审:构建稳定、高效、可扩展的技术架构(下)
  • 深度学习篇---VGGNet网络结构
  • 阿里云轻量服务器的系统镜像和应用镜像的区别在哪?
  • 从零开始的python学习——浅谈python
  • 深度学习网络结构搭建
  • 【算法--链表题4】23.合并K个升序链表
  • Scikit-learn Python机器学习 - 什么是机器学习
  • 【lucene】advanceShallow (int target) 与advance(int target)
  • Vulhub靶场通关教程详解
  • Vibe Coding 概念提出者 AndrejKarpathy 谈强化学习。
  • Flink CDC如何保障数据的一致性
  • 设计模式相关面试题
  • 一个基于物理信息神经网络(Physics-Informed Neural Network, PINN)的多变量时间序列预测模型MATLAB代码
  • 消息队列核心问题解决方案:从丢失到重复消费的全方位保障
  • 力扣(LeetCode) ——965. 单值二叉树(C语言)
  • 化肥行业磷石膏粉尘专项环保解决方案​——从污染治理到资源循环的全流程突破
  • static 作用一:修饰全局变量
  • [高并发系统设计] - 搭建高并发高可用的系统 - 学习与探究