位置: 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预览版)

  • 苹果恢复出厂设置还能找回照片吗(苹果恢复出厂设置)(苹果恢复出厂设置能清干净吗)

    苹果恢复出厂设置还能找回照片吗(苹果恢复出厂设置)(苹果恢复出厂设置能清干净吗)

  • 微信退票多久到账(微信订票退票后钱什么时间到账)

    微信退票多久到账(微信订票退票后钱什么时间到账)

  • 收付款二维码发给别人了怎么办(收付款二维码发给别人可以消费吗)

    收付款二维码发给别人了怎么办(收付款二维码发给别人可以消费吗)

  • 苹果3代耳机怎么充电(苹果3代耳机怎么重置)

    苹果3代耳机怎么充电(苹果3代耳机怎么重置)

  • 如何消除订单的感叹号(如何消除订单的隐藏信息)

    如何消除订单的感叹号(如何消除订单的隐藏信息)

  • 虚拟运营商有哪些(虚拟运营商有哪些大流量卡)

    虚拟运营商有哪些(虚拟运营商有哪些大流量卡)

  • cam al00是什么手机(cam-al00是华为什么型号)

    cam al00是什么手机(cam-al00是华为什么型号)

  • 抖音截流是什么意思(抖音截流获客软件)

    抖音截流是什么意思(抖音截流获客软件)

  • 荣耀v20后台怎么关闭

    荣耀v20后台怎么关闭

  • 支付宝怎么设置密码锁不让别人看(支付宝怎么设置密码锁屏)

    支付宝怎么设置密码锁不让别人看(支付宝怎么设置密码锁屏)

  • 钉钉直播退出去再进去算时间吗(钉钉直播退出去老师知道吗)

    钉钉直播退出去再进去算时间吗(钉钉直播退出去老师知道吗)

  • 为什么手机总是频繁欠费(为什么手机总是自动关机重启)

    为什么手机总是频繁欠费(为什么手机总是自动关机重启)

  • vivos1都有什么功能(vivos1有什么功能需要关掉)

    vivos1都有什么功能(vivos1有什么功能需要关掉)

  • 苹果11怎么录屏幕视频(苹果11怎么录屏没有声音)

    苹果11怎么录屏幕视频(苹果11怎么录屏没有声音)

  • 快手几个人举报可以封号(快手几个人举报会被永久封号)

    快手几个人举报可以封号(快手几个人举报会被永久封号)

  • 手机卡号码怎么查(手机卡号码怎么导出来)

    手机卡号码怎么查(手机卡号码怎么导出来)

  • vue添加字体怎么变大(vue怎么加字幕视频教程)

    vue添加字体怎么变大(vue怎么加字幕视频教程)

  • 抖音怎么恢复删除作品(抖音怎么恢复删除的聊天记录)

    抖音怎么恢复删除作品(抖音怎么恢复删除的聊天记录)

  • 苹果11夜拍模式怎么打开(苹果11夜拍模式在哪里设置)

    苹果11夜拍模式怎么打开(苹果11夜拍模式在哪里设置)

  • 华为p30微信视频可以美颜吗(华为p30微信视频聊天怎么开美颜)

    华为p30微信视频可以美颜吗(华为p30微信视频聊天怎么开美颜)

  • 图虫发布的视频为什么看不到(图虫做的视频在哪里)

    图虫发布的视频为什么看不到(图虫做的视频在哪里)

  • 华为抬手亮屏设置(华为手机如何开启抬手亮屏)

    华为抬手亮屏设置(华为手机如何开启抬手亮屏)

  • 【ChatGPT】阿里版 ChatGPT 突然官宣意味着什么?(阿里pv)

    【ChatGPT】阿里版 ChatGPT 突然官宣意味着什么?(阿里pv)

  • 销项税额是指
  • 劳务外包人员在本公司可报销吗
  • 防伪税控技术维护费怎么申报
  • 交易性金融资产公允价值变动计入
  • 上级补助收入对应的支出科目是哪个
  • 进口消费税为什么一定要组价
  • 法人分红需要交个税吗
  • 连锁药店总部的首营资料
  • 供暖企业收取的容量热价费怎么计入收入
  • 坐收坐支在会计上如何反映
  • 进口货物关税计入成本吗
  • 计入无形资产
  • 收到抵账车辆无发票
  • 小规模企业是否需要备案登记
  • 一般纳税人旅游服务差额征税税率
  • 个人所得税薪金所得是实发工资还是应发工资
  • 企业所得税计算器2023
  • 购货方红字发票信息表怎么开
  • 会员的消费频次怎么计算
  • 工程结算收入和应收账款的区别
  • 土地的契税和印花税记入什么科目
  • 白酒与外购产品的区别
  • 两万元大写金额报销单怎么写
  • 不交社保是否可以马上辞职
  • 开过去的普通发票多久不能冲红?
  • 移动操作系统有哪些主要特点和功能
  • thinkphp表单提交
  • 驾校收入与成本的关系
  • 合同预付款怎么做账
  • PHP:oci_field_name()的用法_Oracle函数
  • PHP:iconv_strrpos()的用法_iconv函数
  • 南极岛在哪
  • 踩雷日记:Pytorch mmcv-full简易安装
  • 低值易耗品摊销方法名称怎么选
  • 跨年调整收入增值税怎么办
  • vue生成二维码分享
  • vue3用法
  • 手把手教你安装技嘉b550 master主板
  • nodejs安装及环境配置 centos
  • python数学建模资料
  • 开个人劳务发票怎么缴个人所得税
  • 补充医疗保险属于什么
  • 回购股票 会计处理
  • 公司银行销户钱转到哪里去
  • 公司注册后一直没有申报
  • 返还个人所得税怎么操作
  • sqlserver2005使用
  • 事业单位以固定工资为准
  • 年末已经结账了怎么入账
  • 未分配利润可以弥补亏损吗
  • 股东所有者权益负数
  • 三方协议代付的钱在哪里
  • 其他应收款对应的预算会计
  • 去年的费用怎么做分录
  • 应收账款收不回来怎么处理比较好
  • 咋样理解
  • 自产自销属于商品吗
  • 租房公司报销发票怎么开
  • 抵扣认证的发票需要还回去吗
  • 给外国公司开发票有什么涉税风险
  • 不得从销项税额中抵扣进项税的有哪些
  • 子公司利润母公司还有其他方式吗
  • 接受代销货物的会计分录
  • 旅行社代订机票怎么做账
  • mysql存储过程是什么意思
  • 安装Win8 64位旗舰版系统提示“windows无法安装到这个磁盘”的故障分析及解决方法
  • 下列哪种情况能使血管升压素释放增加
  • windows升级后c盘满了
  • linux命令i
  • windows 7的用户类型
  • linux arp -s
  • Linux服务器架设指南百度网盘
  • 2016年Win10 Mobile红石更新抢先看 预期新功能/发布时间表
  • 怎么用winrar打包压缩文件
  • 基于jquery实现小说
  • angular.js
  • jQuery+css实现的tab切换标签(兼容各浏览器)
  • python常用的内置逻辑判断函数
  • jquery获取当前元素是第几个元素
  • 新一轮税制改革的背景是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设