ProDescriptions - 高级定义列表
何时使用
高级描述列表组件,提供一个更加方便快速的方案来构建描述列表。
ProDescriptions 的诞生是为了解决项目中需要写很多 Descriptions 的样板代码的问题,所以在其中封装了很多常用的逻辑。在 React 中写一个 Descriptions 免不了需要定义一些雷同的属性。所以 ProDescriptions 默认封装了请求网络,columns 列展示的逻辑。
比如 ProDescriptions 封装了请求网络的行为,ProDescriptions 会将 props.params 中的数据默认带入到请求中,如果接口恰好与我们的定义相同,实现一个查询会非常简单。
我们约定 request 拥有一个参数, params 会自带 props 中的 params 。类型如下:
对于请求回来的结果,ProDescriptions 也有一些约定,类型如下:
代码演示
基础定义列表
基本使用
订单详情
订单备注客户要求在一季度内完成全部部署上线工作,优先安排专属技术支持团队跟进对接,确保各环节顺利推进客户要求在一季度内完成全部部署上线工作,优先安排专属技术支持团队跟进对接,确保各环节顺利推进 | |
合同金额 | 完成进度75.00% |
订单状态处理中 | 付款方式bank |
交付进度 75% | 下单时间2024-01-15 00:00:00 |
签约日期2024-01-15 | 服务周期 2024-01-15 00:00:00 ~ 2025-01-14 00:00:00 |
创建时间00:00:00 | 部署脚本 |
服务配置 | |
基础定义列表
数组类型 dataIndex
数组类型dataIndex
格式化配置
根据配置格式化日期
高级定义列表
日期2024.01.15 | 日期区间 2024.01.14 00:00:00 ~ 2024.01.15 00:00:00 |
时间2024.01.15 | 时间日期2024.01.15 00:00:00 |
更新时间3 years ago | |
ProDescriptions 格式化配置 Props 说明:
- column: 列数,设置为 2 表示每行显示 2 列
- title: 描述列表标题
- tooltip: 标题提示信息
列配置(columns)常用项:
- label: 标签文本
- valueType: 值类型,决定如何渲染数据
- fieldProps: 字段属性配置
- children: 数据内容(无 dataIndex 时作为展示值)
FieldProps 格式化配置:
- format: 格式化字符串,定义显示格式
- 自定义格式: 支持 dayjs 的所有 格式化选项
ValueType 日期时间类型:
- date: 日期格式,显示年月日
- dateTime: 日期时间格式,显示年月日时分秒
- dateTimeRange: 日期时间区间格式
- time: 时间格式,显示时分秒
- fromNow: 相对时间格式,显示多久之前
格式化字符串说明:
- YYYY: 四位年份
- MM: 两位月份
- DD: 两位日期
- HH: 24小时制小时
- mm: 分钟
- ss: 秒
数据格式:
- 时间戳: 使用 dayjs().valueOf() 获取时间戳
- 数组格式: 日期区间使用数组 [start, end]
- 相对时间: fromNow 类型支持相对时间计算
Dayjs 操作:
- add: 添加时间,如 add(-1, 'month') 表示一个月前
- valueOf: 获取时间戳
- 格式化: 通过 format 方法格式化时间
使用场景:
- 日期展示: 展示各种格式的日期时间
- 时间区间: 展示时间范围
- 相对时间: 展示相对时间,如"一个月前"
- 格式化定制: 根据需求定制显示格式
最佳实践:
- 格式统一: 在项目中保持日期格式的一致性
- 用户友好: 选择用户容易理解的格式
- 国际化: 考虑不同地区的日期格式习惯
- 性能考虑: 避免频繁的时间格式化操作
格式化配置
远程请求数据
通过请求接口数据来展示定义列表
ProDescriptions Request 请求 Props 说明:
- actionRef: 操作引用,用于调用组件方法
- title: 描述列表标题
- request: 异步请求函数,返回数据
- extra: 右上角额外内容
Request 请求配置:
- 异步函数: 返回 Promise 对象
- 数据格式: { success: boolean, data: object }
- 自动加载: 组件挂载时自动请求数据
- 错误处理: 自动处理请求错误
columns 与 request 配合:
- dataIndex: 数据字段名,自动绑定到 request 返回的数据
- label: 标签文本
- valueType: 值类型,决定如何渲染数据
- render: 自定义内容,如操作按钮(valueType 为 option 时放入 extra 区域)
ActionRef 操作方法:
- reload: 重新加载数据
- reset: 重置数据
- clearSelected: 清除选中状态
ValueType 类型:
- date: 日期格式,自动格式化显示
- money: 金额格式,自动添加货币符号
- option: 操作按钮,支持自定义组件
Extra 额外内容:
- React 节点: 支持任何 React 组件
- 操作按钮: 常用于添加操作按钮
- 样式控制: 可以自定义样式和交互
数据绑定特点:
- 自动绑定: 通过 dataIndex 自动绑定数据
- 类型安全: 提供完整的类型检查
- 响应式更新: 数据变化时自动更新显示
使用场景:
- 数据展示: 从 API 获取数据并展示
- 动态刷新: 通过按钮刷新数据
- 操作控制: 通过 actionRef 控制组件行为
- 用户交互: 提供用户操作界面
最佳实践:
- 错误处理: 在 request 中处理请求错误
- 加载状态: 提供加载状态反馈
- 数据验证: 验证返回数据的格式
- 用户体验: 提供清晰的操作反馈
columns 配置
通过请求接口数据和 columns 来展示定义列表
ProDescriptions Columns 配置 Props 说明:
- title: 描述列表标题
- request: 异步请求函数,返回数据
- emptyText: 空数据时显示的文本
- columns: 列配置数组,定义每列的属性
Column 配置项:
- title: 列标题
- key: 列的唯一标识
- dataIndex: 数据字段名
- valueType: 值类型,决定如何渲染
- valueEnum: 枚举值配置
- fieldProps: 字段属性配置
- render: 自定义渲染函数
ValueType 类型:
- select: 选择框,配合 valueEnum 使用
- date: 日期格式
- switch: 开关组件
- money: 金额格式
- option: 操作按钮
- percent: 百分比格式
FieldProps 字段属性:
- format: 日期格式化字符串,如 'DD.MM.YYYY'
- moneySymbol: 货币符号,可以是字符串或 false
- 自定义属性: 根据 valueType 传递相应属性
ValueEnum 枚举配置:
- text: 显示的文本
- status: 状态类型,影响显示样式
- 支持状态: Default, Error, Success, Processing
Render 自定义渲染:
- 函数返回: 返回 React 节点数组
- 操作按钮: 常用于渲染操作链接或按钮
- 样式控制: 完全控制渲染内容的样式
列配置方式:
- columns: 通过 columns 数组统一定义全部展示项
使用场景:
- 动态列: 根据数据动态生成列配置
- 复杂展示: 展示各种类型的数据
- 操作列: 添加操作按钮或链接
- 格式化显示: 自定义数据格式化方式
最佳实践:
- 列配置: 使用 columns 配置批量定义列
- 字段属性: 通过 fieldProps 传递组件属性
- 自定义渲染: 使用 render 函数实现复杂渲染
- 类型匹配: 选择合适的 valueType 展示数据