位置: IT常识 - 正文

Ant Design Pro(5)-7.高级表格ProTable

编辑:rootadmin
Ant Design Pro(5)-7.高级表格ProTable Ant Design Pro 高级表格ProTable的使用文章目录Ant Design Pro 高级表格ProTable的使用一. 简介1. 什么是ProTable?2. 何时使用ProTable?二. 使用1. ProTable属性及使用2. ActionRef 手动触发3. Columns 列定义4. 批量操作5. 搜索表单一. 简介1. 什么是ProTable?

推荐整理分享Ant Design Pro(5)-7.高级表格ProTable,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

ProTable 的诞生是为了解决项目中需要写很多 table 的样板代码的问题,所以在其中做了封装了很多常用的逻辑。这些封装可以简单的分类为预设行为与预设逻辑。

依托于 ProForm 的能力,ProForm 拥有多种形态,可以切换查询表单类型,设置变形成为一个简单的 Form 表单,执行新建等功能。

2. 何时使用ProTable?

当你的表格需要与服务端进行交互或者需要多种单元格样式时,ProTable 是不二选择。

二. 使用1. ProTable属性及使用request的使用

request 是 ProTable 最重要的 API,request 会接收一个对象。对象中必须要有 data 和 success,如果需要手动分页 total 也是必需的。request 会接管 loading 的设置,同时在查询表单查询和 params 参数发生修改时重新执行。同时 查询表单的值和 params 参数也会带入。以下是一个例子:

<ProTable<DataType, Params> // params 是需要自带的参数 // 这个参数优先级更高,会覆盖查询表单的参数 params={params} request={async ( // 第一个参数 params 查询表单和 params 参数的结合 // 第一个参数中一定会有 pageSize 和 current ,这两个参数是 antd 的规范 params: T & { pageSize: number; current: number; }, sort, filter, ) => { // 这里需要返回一个 Promise,在返回之前你可以进行数据转化 // 如果需要转化参数可以在这里进行修改 const msg = await myQuery({ page: params.current, pageSize: params.pageSize, }); return { data: msg.result, // success 请返回 true, // 不然 table 会停止解析数据,即使有数据 success: boolean, // 不传会使用 data 的长度,如果是分页一定要传 total: number, }; }}/>dataSource

Table 的数据,protable 推荐使用 request 来加载,类型是一个数组T【】

<ProTable<API.CreateClusterParams> columns={columns} // dataSource会将 dataSource={list} request={async (params = {}, sort, filter) => { // 这里是我自定义的一个带参数的方法 handleClick(params); return { dataSource:data } }} pagination={{ defaultPageSize: 10, showSizeChanger: true, }} > </ProTable>

其它属性使用请参考官方文档:ProTable属性及使用

2. ActionRef 手动触发

有时我们要手动触发 table 的 reload 等操作,可以使用 actionRef,可编辑表格也提供了一些操作来帮助我们更快的实现需求。

interface ActionType { reload: (resetPageIndex?: boolean) => void; reloadAndRest: () => void; reset: () => void; clearSelected?: () => void; startEditable: (rowKey: Key) => boolean; cancelEditable: (rowKey: Key) => boolean;}const ref = useRef<ActionType>();<ProTable actionRef={ref} />;// 刷新ref.current.reload();// 刷新并清空,页码也会重置,不包括表单ref.current.reloadAndRest();// 重置到默认值,包括表单ref.current.reset();// 清空选中项ref.current.clearSelected();// 开始编辑ref.current.startEditable(rowKey);// 结束编辑ref.current.cancelEditable(rowKey);3. Columns 列定义Ant Design Pro(5)-7.高级表格ProTable

详情请参考官方文档:Columns 列定义 具体如何使用可以参考后面我写的完整的页面

import { ModalForm, ProColumns, ProFormText, ProFormTextArea, ProTable } from '@ant-design/pro-components';import { useEffect, useState } from 'react';import { Button, message, Space } from 'antd';import AddCluster from "@/pages/System/ClusterManagement/components/AddCluster";import { pageQueryCluster } from "@/services/ant-design-pro/test";import { request } from '@umijs/max';const columns: ProColumns<API.CreateClusterParams>[] = [ { title: 'ID', dataIndex: 'id', }, { title: '名称', dataIndex: 'name', }, { title: '操作', key: 'option', width: 120, valueType: 'option', render: (_, row) => [ <Space> <ModalForm title="编辑" trigger={<Button type="primary">编辑</Button>} // form={row} autoFocusFirstInput modalProps={{ destroyOnClose: true, onCancel: () => console.log('run'), }} submitTimeout={2000} onFinish={async (values) => { console.log(values.name); return true; }} > <ProFormText width="md" name="id" label="ID" placeholder="请输入id" initialValue={row.id} /> <ProFormText width="md" name="name" label="名称" placeholder="请输入名称" initialValue={row.name} /> <Button type="primary"> 测试配置连接 </Button> </ModalForm> </Space>, <Space> <ModalForm title="确定要删除吗?" trigger={<Button type="primary" danger>删除</Button>} // form={row} autoFocusFirstInput modalProps={{ destroyOnClose: true, onCancel: () => console.log('run'), }} submitTimeout={2000} onFinish={async (row) => { message.success('提交成功'); return true; }} > </ModalForm> </Space>, ], },]// 在数据为返回前显示这里的数据const data = [ { id: '1', name: '测试集群1', }, { id: '2', name: '测试集群2', }, ];const pageParams = { pageSize: 10, pageNumber: 1};export default () => { const [list, setData] = useState(data); const handleClick = async (props: any) => { const respone = await pageQueryCluster(props) console.log("获取后台数据", respone) if (respone.code = '200') { setData(respone.data.items); } else { setData(data); } console.log(respone) } useEffect(() => { handleClick(pageParams); }, []) return ( <div className='proTable'> <AddCluster /> <ProTable<API.CreateClusterParams> columns={columns} dataSource={list} request={async (params = {}, sort, filter) => { handleClick(params); return { dataSource: data } }} pagination={{ defaultPageSize: 10, showSizeChanger: true, }} > </ProTable> </div> );};4. 批量操作

与 antd 相同,批量操作需要设置 rowSelection 来开启,与 antd 不同的是,pro-table 提供了一个 alert用于承载一些信息。你可以通过 tableAlertRender和 tableAlertOptionRender来对它进行自定义。设置或者返回 false 即可关闭。

属性描述类型默认值alwaysShowAlert总是展示 alert,默认无选择不展示(rowSelection内置属性)boolean-tableAlertRender自定义批量操作工具栏左侧信息区域, false 时不显示({ selectedRowKeys: Key[], selectedRows: T[], onCleanSelected: ()=>void }) => ReactNode)/false-tableAlertOptionRender自定义批量操作工具栏右侧选项区域, false 时不显示({ selectedRowKeys: Key[], selectedRows: T[], onCleanSelected: ()=>void }) => ReactNode)/false

具体使用参考如下链接:table表格批量操作

5. 搜索表单

ProTable 会根据列来生成一个 Form,用于筛选列表数据,最后的值会根据通过 request 的第一个参数返回,看起来就像。

搜索表单有两种类型:

一种是带搜索框的,组件默认开启,也可手动开启。 search={{ labelWidth: 'auto', }}

页面效果如下:

一种是轻量筛选替换查询,开启方式如下: search={{ filterType: 'light', }}

页面效果如下:

如果组件自带的搜索功能不满足我们的需求,我们也可以自定义搜索表单,具体如何使用请参考如下链接:搜索表单自定义

其他更多细节和详情参考:ProComponents官网

本文链接地址:https://www.jiuchutong.com/zhishi/283190.html 转载请保留说明!

上一篇:echarts 横纵坐标设置(echarts纵坐标加单位)

下一篇:苹果发布macOS Big Sur 11.2 候选版 附修复内容(苹果发布macOS13.3预览版)

  • 联想进入bios设置按哪个键(联想进入BIOS设置UEFI启动)

    联想进入bios设置按哪个键(联想进入BIOS设置UEFI启动)

  • word怎么创建索引(word怎么创建索引文件)

    word怎么创建索引(word怎么创建索引文件)

  • 微信真的可以开双封吗(微信真的可以开视频号吗)

    微信真的可以开双封吗(微信真的可以开视频号吗)

  • 路由器速率怎么选择(路由器速率怎么设置最快)

    路由器速率怎么选择(路由器速率怎么设置最快)

  • 小米云流量支持机型有哪些(小米云流量支持多少G)

    小米云流量支持机型有哪些(小米云流量支持多少G)

  • 普通sim卡能转esim卡吗

    普通sim卡能转esim卡吗

  • 淘宝系统默认好评计分吗(淘宝系统默认好评和五星好评有什么区别)

    淘宝系统默认好评计分吗(淘宝系统默认好评和五星好评有什么区别)

  • iphone8p上市时间是(iphone8p上市时间百度知道)

    iphone8p上市时间是(iphone8p上市时间百度知道)

  • 小米手机桌面图标恢复(小米手机桌面图标大小设置)

    小米手机桌面图标恢复(小米手机桌面图标大小设置)

  • 名片赞是什么(名片赞是什么赞)

    名片赞是什么(名片赞是什么赞)

  • 三星g9200什么型号(三星g900是什么型号)

    三星g9200什么型号(三星g900是什么型号)

  • 一个手机号可以申请几个快手号(一个手机号可以注册几个支付宝)

    一个手机号可以申请几个快手号(一个手机号可以注册几个支付宝)

  • 怎么把软件移到sd卡oppo(怎么把软件移到d盘)

    怎么把软件移到sd卡oppo(怎么把软件移到d盘)

  • 如何查看独立显卡内存(如何查看独立显卡和集成显卡)

    如何查看独立显卡内存(如何查看独立显卡和集成显卡)

  • 荣耀9x升降摄像头怎么打开(荣耀9x升降摄像头卡住了)

    荣耀9x升降摄像头怎么打开(荣耀9x升降摄像头卡住了)

  • 微博认证手机怎么弄(手机端微博认证在哪里)

    微博认证手机怎么弄(手机端微博认证在哪里)

  • wps怎么加目录(wps怎么加目录页码)

    wps怎么加目录(wps怎么加目录页码)

  • 怎么修改电费手机号码(怎样改电费的手机号码)

    怎么修改电费手机号码(怎样改电费的手机号码)

  • 用户画像是通过cookie统计的吗(用户画像原理)

    用户画像是通过cookie统计的吗(用户画像原理)

  • 苹果x声音小怎么调(苹果X声音小怎么办已经调到最大)

    苹果x声音小怎么调(苹果X声音小怎么办已经调到最大)

  • 为啥我qq加别人不显示(为什么qq加上好友却不是好友)

    为啥我qq加别人不显示(为什么qq加上好友却不是好友)

  • 为什么搜索手机号找不到微信(为什么搜索手机号搜不到微信)

    为什么搜索手机号找不到微信(为什么搜索手机号搜不到微信)

  • 手机怎么修改图片像素(手机怎么修改图片的kb大小)

    手机怎么修改图片像素(手机怎么修改图片的kb大小)

  • 苹果手机描述文件不可移除怎么办 (苹果手机描述文件删除了如何恢复)

    苹果手机描述文件不可移除怎么办 (苹果手机描述文件删除了如何恢复)

  • 手机人脸识别可以用照片吗(手机人脸识别可以用视频解锁吗)

    手机人脸识别可以用照片吗(手机人脸识别可以用视频解锁吗)

  • it是什么职业(it啥职业)

    it是什么职业(it啥职业)

  • YOLOv5|YOLOv7|YOLOv8改各种IoU损失函数:YOLOv8涨点Trick,改进添加SIoU损失函数、EIoU损失函数、GIoU损失函数、α-IoU损失函数

    YOLOv5|YOLOv7|YOLOv8改各种IoU损失函数:YOLOv8涨点Trick,改进添加SIoU损失函数、EIoU损失函数、GIoU损失函数、α-IoU损失函数

  • 小规模纳税人广告费扣除标准
  • 付加工费会计分录怎么做
  • 劳动合同和劳务合同有什么区别 举例
  • 利息费用和利息支出的区别计算公式
  • 留存收益未分配利润占比
  • 年未决算的现金利润怎么算
  • 税收滞纳金计税吗
  • 商场促销的税务处理怎么做?
  • 公司配股后,会迅速提高公司股票市价
  • 多计提的固定资产折旧
  • 税控盘维护费是普票能全额抵扣吗
  • 有留抵税额会计分录
  • 技术服务费可以计入研发费用吗
  • 分公司哪些税需要交
  • 土方运输费会计分录
  • 印花税是填开票金额吗
  • 每月交的社保什么时候到账
  • 冲红发票开具
  • 小规模纳税人日用品增值税税率
  • 采购与付款内部控制开题报告
  • 递延所得税资产借贷方向
  • 专票地址不对可以重开吗
  • 小企业流动资产一般是多少
  • 关于获得政府补助的公告
  • 业务招待费扣除基数的收入包括哪些
  • 交罚金怎么交
  • 支付宝安全控件是什么
  • linux配置多网卡设置
  • 已认证进项税发票可抵扣么
  • pgptray.exe - pgptray是什么进程 有什么用
  • 购销合同印花税税率2023
  • 研发机构采购国产设备退税管理办法
  • 应收票据的基本要素包括
  • 未交社保可以要求单位赔偿吗
  • php传值给js
  • 前端使用vue
  • ctf web2
  • javascript猜数字游戏+表单
  • python读取全部文件
  • css page-break-after
  • 固定资产盘盈为什么计入以前年度损益调整
  • 织梦常用调用标签
  • 本月损益类未结转为零的一级科目6603
  • 电子发票报销需要签字吗
  • 费用报销单里的类别怎么填
  • 个体经营所得税怎么网上申报
  • 购买增值税发票系统属于什么科目?
  • linux系统中mysql数据库的导入和导出
  • 房地产企业购买礼品赠送客户
  • 无票收入要交企业所得税吗
  • 企业稳岗返还使用情况明细表
  • 超市出租摊位交什么税
  • 代理进口货物如何确定增值税纳税人
  • 职工福利费如何入账
  • 免增增值税的有
  • 代缴社保会计分录
  • 印花税计提依据业务发生时间还是开票时间?
  • 软件测试费用明细
  • 股权投资与债权投资包括什么
  • mysql的zip包怎么安装
  • centos7访问百度的命令
  • Fedora 9.0 Apache+PHP+MYSQL 环境安装
  • WinAce.exe - WinAce是什么进程
  • win8.1应用
  • 如何设置windows桌面图标
  • 解决的英文
  • win10系统激活后怎么关闭
  • linux命令行技巧
  • js date类型
  • python图论算法
  • perl中sub
  • 动作手游排行榜2020前十名
  • 范冰冰魔范学院杂志可爱公主风
  • jquery右击事件
  • jQuery Ajax传值到Servlet出现乱码问题的解决方法
  • js prototype constructor
  • js复制div
  • 房屋契税2013年收费标准
  • 上海税务办事大厅电话
  • 外汇申报填写什么最简单
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设