高级列表组件ReList

news2024/11/27 20:58:24

高级列表组件ReList

组件实现基于 Vue3 + Element Plus + Typescript,同时引用 vueUse + lodash-es + tailwindCss (不影响功能,可忽略)

主要基于JSX风格实现高度动态的列表渲染组件,可以通过信息配置Metas配置控制信息项展示,同时支持render函数自定义渲染。

提供两种风格的List展示方式,以及两种布局方式,再搭配Metas配置,可以实现多种多样的List展示方式,能够满足日常80%的展示方式。

基于这个列表组件,扩展了分页列表,滚动加载列表,虚拟列表等应用组件。

思路

基于Vue3 对 JSX(TSX)的支持,利用JSX的高度动态渲染方式,进行List项的渲染。将每个列表项信息的渲染独立成一个JSX渲染,然后根据布局控制每个信息的展示顺序来实现一个高度动态的列表。

其次,通过metas配置控制列表信息项的展示,只有需要展示才进行渲染,同时支持自定义render渲染,基于vue3的h方法,除次之外,提供作用域插槽用于整个列表项的自定义渲染(只有组件不满足您想要的时候在考虑)。

基础

通过 metas 字段配置列表项展示内容。支持配置列表项内容对于的数据字段,自定义渲染,绑定事件,自定义样式类。

在这里插入图片描述

查看 /demo/list/basic.md

可选择

设置 checkable 字段开启列表可选中,支持绑定 checks 获取当前的选中列表,需要指定 rowKey 字段指定绑定值

在这里插入图片描述

查看 /demo/list/checkable.md

可展开

设置 expandable 字段开启列表项展开控制,默认会隐藏 content/description 内容信息。试着改变布局观察不同效果。

在这里插入图片描述

查看 /demo/list/expandable.md

自定义操作列

通过 metas 字段配置 actions 可以自定义操作按钮组渲染。actions的配置与其他几个内容字段配置有些差别,注意区分

在这里插入图片描述

查看 /demo/list/actions.md

垂直布局

通过 itemLayout 字段指定列表项的布局展示,type=list 和 type=card 均支持。试着改变布局观察不同效果。

在这里插入图片描述

在这里插入图片描述

查看 /demo/list/layout.md

列表页头/页脚

通过 title 属性或者 title / extra 插槽控制列表页头展示,通过 footer 插槽自定义列表页脚展示。

在这里插入图片描述

查看 /demo/list/header.md

卡片列表

设置 type=card 切换列表展示风格。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看 /demo/list/card.md

响应网格卡片列表

卡片列表支持多列展示,能够更好的满足卡片布局风格。可以通过 grid 指定网格列数,每个卡片列表项默认占1格(不可改)。

在这里插入图片描述

查看 /demo/list/grid.md

卡片操作列

卡片风格的列表,操作按钮组支持调整显示位置。可以设置 action-positioncard-footer 将操作按钮组放置在卡片页脚位置,这是一种常见的布局展示方式。
在这里插入图片描述

在这里插入图片描述

查看 /demo/list/card-footer.md

自定义渲染

metas 字段配置展示内容,支持自定义render函数实现自定义渲染,但有时候我们需要整个列表项都自定义时,使用render函数渲染比较麻烦,可以通过default默认插槽实现自定义渲染。default插槽作为作用域插槽,支持item、metas两个作用域参数字段。

在这里插入图片描述

查看 /demo/list/slot-scoped.md

ReList属性

字段说明类型默认值
items必填,列表项数据集Record<string, any>[]-
metas必填,列表项展示配置ReListItemMetas-
title列表标题string-
checks(v-model)绑定勾选值Array<string | number>-
rowKey列表项主键,作为modelValue绑定值string“id”
split是否显示分割线booleantrue
border是否显示边框booleanfalse
loading加载状态booleanfalse
rowClassName自定义列表项样式类string-
customClass自定义List容器样式类string-
hover是否显示悬浮样式booleantrue
expandable是否可展开,仅在type="list"下有效booleanfalse
checkable是否可选,不同列表风格下交互不同booleanfalse
ghost是否去掉内边距booleanfalse
type列表类型“card” | “list”“list”
grid响应网格,仅在type="card"下有效number | ReGridResponsive1
gutter网格间距,仅在type="card"下有效number | [number] | [number, number]16
action-position附加操作栏位置,仅在type="card"下有效“default” | “card-footer”“default”
avatar-position头像展示位置“left” | “right”“left”
avatarHideInExpanded是否在折叠时隐藏头像booleantrue
itemLayout列表项布局“vertical” | “horizontal”“horizontal”
itemHeight列表项高度,内容溢出被隐藏number-

ReListItemMetas 展示配置

有指定字段则会展示对应信息项

字段说明类型
avatar头像,未指定则不显示ReListItemMeta
title标题,未指定则不显示ReListItemMeta
subTitle副标题,未指定则不显示ReListItemMeta
content正文,未指定则不显示ReListItemMeta
description描述文本,未指定则不显示ReListItemMeta
actions配置操作列,未指定则不显示ReListItemAction[]

types 类型声明:

export interface ReListItemMetas {
  avatar?: ReListItemMeta; // 头像
  title?: ReListItemMeta; // 标题
  subTitle?: ReListItemMeta; // 副标题
  content?: ReListItemMeta; // 正文
  description?: ReListItemMeta; // 描述
  actions?: ReListItemAction[]; // 操作列配置
}

export interface ReListItemAction {
  text?: string; // 操作按钮显示文本
  props?: Partial<ButtonProps>; // 按钮属性
  render?: (item: ReListItemProps["item"], expanded?: boolean) => VNode; // 自定义渲染函数
  events?: ReListItemMeta["events"]; // 绑定事件
}

export interface ReListItemMeta {
  dataIndex?: string; // 数据索引字段,默认按照ReListItemMetas键名
  customClass?: string; // 自定义样式类
  style?: string; // 自定义样式
  render?: (item: ReListItemProps["item"], expanded?: boolean) => VNode; // 自定义渲染函数
  events?: Record<string, Function>; // 绑定事件
}

ReList事件

事件名说明格式 |
update:checks已选中列表发生变化时触发(checks: Array<string | number>) => void
check点击某个复选框时触发(checked: boolean, id: string | number, item: Record<string, any>) => void

ReList插槽

插槽名说明
default列表项作用域插槽,带有 item、metas 两个作用域变量
titleList页头标题插槽
extraList页头额外信息插槽
footerList页脚插槽

源代码

Github

可以通过查看具体实现,如果遇到问题可以留言或者提出issue。

如果觉得对您有帮助的话,可以请小编瑞一下

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2060538.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数学基础(二)

一、导数 导数计算&#xff1a; 偏导数&#xff1a; 方向导数&#xff1a; 梯度&#xff1a; 函数在某点的梯度是一个向量&#xff0c;它的方向余方向导数最大值取得的方向一致。其大小正好是最大的方向导数 二、微积分 面积由来&#xff1a; 切线&#xff1a; 定积分&#x…

[Linux]如何在虚拟机安装Ubuntu?(小白向)

一、我们为什么要在虚拟机中安装Ubuntu? 在虚拟机中安装系统主要是为了让一个系统与我们原本的系统隔离&#xff0c;不管是想运行一些不安全的软件&#xff0c;或者是想运行一些独特的操作系统&#xff0c;我们都可以选择使用虚拟机来安装和隔离这些操作系统。如果你是一位Lin…

PMP–知识卡片--工作分解结构WBS元素

WBS包含如下几种元素&#xff1a; &#xff08;1&#xff09;子项目&#xff1a;子项目是整个项目的一部分&#xff0c;它可以被相对独立地作为“项目”进行管理&#xff0c;可以由一个专业团队或一个分包组织负责&#xff1b; &#xff08;2&#xff09;控制账户&#xff1a;控…

爆款来袭!AI萌娃T台秀,单条视频千万级播放量,制作方法竟如此简单!

大家好&#xff0c;我是小奇&#xff0c;一名热衷于分享AI副业项目的普通博主。不管你是AI小白还是老手&#xff0c;我都能帮你轻松上手&#xff0c;用AI技术赚钱。想多赚点&#xff1f;跟我来&#xff0c;一起探索AI副业&#xff0c;实现财务自由&#xff01;记得关注我哦&…

Java、python、php版的高校失物招领平台(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…

数据结构(11)——二叉搜索树

欢迎来到博主的专栏&#xff1a;数据结构 博主ID:代码小豪 文章目录 二叉搜索树二叉搜索树的声明与定义二叉搜索树的查找二叉搜索树的插入二叉搜索树的中序遍历二叉搜索树的删除 key_value型搜索二叉树 二叉搜索树 二叉搜索树也称二叉排序树&#xff0c;是具备以下特征的二叉树…

sourceinsigt + samba

samba服务器 yum install -y sambsystemctl start smb systemctl enable smb 注意 setenforce 0 是一个用于管理 SELinux&#xff08;Security-Enhanced Linux&#xff09;模式的命令。SELinux 是 Linux 内核的一种安全模块&#xff0c;提供了强制访问控制&#xff08;MAC&am…

【密码学】密钥管理:②密钥分配

一、密钥分配的定义 密钥分配是密钥管理生命周期中最重要的部分&#xff0c;密钥分配方案研究的是密码系统中密钥的分发和传送问题。从本质上讲&#xff0c;密钥分配为通信双方建立用于信息加密、解密签名等操作的密钥&#xff0c;以实现保密通信或认证签名等。 &#xff08;1…

埃氏筛选法求素数

埃氏筛选法求素数可以减少遍历次数&#xff0c;及在前期的循环中就将存在的合数打上标记&#xff0c;从而提高算法的时间效率。 一、算法实现 void prime_number(int n) {int flag[n];int count 0;int* primeArr;/// 默认标记所有的数都是素数memset(flag,0,sizeof(flag…

浅析打电话检测算法接打电话识别算法展示及其全套打电话检测算法源码

打手机检测算法&#xff0c;特别是智能边缘分析一体机中的打手机检测算法&#xff0c;是一种专门用于监控和分析在边缘计算设备上的手机使用行为的算法。这种算法主要利用了机器学习和计算机视觉的先进技术&#xff0c;通过对设备上的视频流或图像进行深入分析&#xff0c;以识…

“万物共生”户外沉浸式展馆光影互动设计,思特科技打造!

01      思特科技助力北京玉渊潭公园 “万物共生” 户外沉浸式展馆光影互动设计&#xff0c;将公园独具特色的人文景观和自然景观相结合&#xff0c;利用数字光影艺术&#xff0c;通过不同形式、不同状态来表现生命的多元化&#xff0c;带来震撼的沉浸式体验。    北京…

加密与安全_解密AES加密中的IV和Seed

文章目录 概述IV&#xff08;Initialization Vector&#xff0c;初始化向量&#xff09;Seed&#xff08;种子&#xff09; CodeseedIV 小结 概述 在AES加密中&#xff0c;**IV&#xff08;Initialization Vector&#xff0c;初始化向量&#xff09;和Seed&#xff08;种子&am…

HoloLens 坐标系统 Coordinate systems

Hololens 和 Unity 空间坐标系统-CSDN博客文章浏览阅读79次。这意味着&#xff0c;在 X、Y 或 Z 轴上相距 2 个单位的物体&#xff0c;在混合现实中的渲染效果是相距 2 米。虽然左手坐标和右手坐标是最常见的系统&#xff0c;但 3D 软件中也会使用其他坐标系。例如&#xff0c;…

【杂乱算法】前缀和与差分

前缀和 文章目录 前缀和一维应用 二维差分一维 二维扩展1、前缀和与哈希表 一维 一个数组prefix中&#xff0c;第i个元素表示nums[0]至nums[i-1]的总和&#xff0c;那么我们就称这个prefix数组是nums数组的前缀和。 prefix [ i ] ∑ j 0 i nums [ j ] \text{prefix}[i] \s…

显示弹出式窗口的方法

文章目录 1. 概念介绍2. 使用方法3. 示例代码 我们在上一章回中介绍了Sliver综合示例相关的内容&#xff0c;本章回中将介绍PopupMenuButton组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的PopupMenuButton组件位于AppBar右侧&#xf…

x-cmd pkg | dua - 一个可以方便地了解给定目录的磁盘空间使用情况的工具

目录 简介用户首次快速实验指南技术特点竞品和相关项目进一步阅读 简介 dua 是 Disk Usage Analyzer 的简写&#xff0c;该工具可以快速查看给定目录的磁盘空间使用情况。 对于想要深入了解磁盘空间使用情况并有效管理存储的用户来说&#xff0c;Dua 是一个很有价值的工具。通…

项目1 物流仓库管理系统

一、项目概述 本项目旨在开发一个功能全面的物流仓库管理系统&#xff0c;以数字化手段优化仓库作业流程&#xff0c;提高管理效率。系统集成了前端用户交互界面与后端数据处理逻辑&#xff0c;涵盖了从用户注册登录、订单管理、货单跟踪到用户信息维护等多个核心业务模块。通…

heic格式转化jpg用什么方法?这8个教程很实用

随着iOS设备的普及&#xff0c;HEIC&#xff08;High Efficiency Image Coding&#xff09;格式成为了默认的图片格式&#xff0c;因其相较于传统的JPEG格式&#xff0c;能更有效地压缩图片文件&#xff0c;保存更多细节&#xff0c;同时占用更少的存储空间。然而&#xff0c;H…

【UE5】Groom毛发系统的基本使用——给小白人添加头发

目录 效果 步骤 一、准备 二、使用3DsMax制作毛发 三、在UE中给小白人安装毛发 四、修改毛发材质 效果 步骤 一、准备 1. 新建一个第三人称模板工程 2. 在项目设置中&#xff0c;勾选“支持计算蒙皮缓存” 3. 在插件面板中&#xff0c;启用“Groom”和“Alembic Gro…

kubernetes的pod基础

kubernetes的pod基础 pod概念 pod&#xff08;豆荚&#xff09;&#xff0c;是k8s的最小管理单元。是一个或多个容器的组合&#xff0c;这些容器共享存储&#xff0c;网络和命名空间&#xff0c;以及运行规范&#xff0c;pod内的容器统一的进行安排和调度。pod是一组具有共享命…