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

  • 如何让别人退出自己的qq音乐(如何让别人退出自己的优酷账号)

    如何让别人退出自己的qq音乐(如何让别人退出自己的优酷账号)

  • 美团地址怎么删除(美团地址怎么删减)

    美团地址怎么删除(美团地址怎么删减)

  • 网易邮箱和网易邮箱大师的区别(网易邮箱和网易云账号是一样的吗)

    网易邮箱和网易邮箱大师的区别(网易邮箱和网易云账号是一样的吗)

  • 投影仪怎么使用(投影仪怎么连接手机)

    投影仪怎么使用(投影仪怎么连接手机)

  • 美版airpods和国行有啥区别(airpods美版国行可以混用吗)

    美版airpods和国行有啥区别(airpods美版国行可以混用吗)

  • 呼叫受限是不是拉黑了(呼叫受限啥意思)

    呼叫受限是不是拉黑了(呼叫受限啥意思)

  • 微信视频对方听不到声音怎么回事(微信视频对方听不见)

    微信视频对方听不到声音怎么回事(微信视频对方听不见)

  • 微信下载后的文件在哪里(微信下载后的文件怎样删除)

    微信下载后的文件在哪里(微信下载后的文件怎样删除)

  • 电信升5g要钱吗(电信升5g免费吗)

    电信升5g要钱吗(电信升5g免费吗)

  • 苹果6plus内存16g要怎么扩大(苹果6plus内存16g多少钱)

    苹果6plus内存16g要怎么扩大(苹果6plus内存16g多少钱)

  • 华为nova7的卡槽在哪里(华为nova7的卡槽孔在哪)

    华为nova7的卡槽在哪里(华为nova7的卡槽孔在哪)

  • 一个身份证可以申请几个微信号(一个身份证可以开几个淘宝店铺)

    一个身份证可以申请几个微信号(一个身份证可以开几个淘宝店铺)

  • 注销微博后手机号还可以再注册吗(注销微博后手机号还能注册吗)

    注销微博后手机号还可以再注册吗(注销微博后手机号还能注册吗)

  • oppo手机充电不显示闪充标志(oppo手机充电不显示超级快充了)

    oppo手机充电不显示闪充标志(oppo手机充电不显示超级快充了)

  • 魅族手机收不到验证码的原因(魅族手机收不到微信提示)

    魅族手机收不到验证码的原因(魅族手机收不到微信提示)

  • 电话接不到可以打出去怎么回事(电话接不到可以投诉吗)

    电话接不到可以打出去怎么回事(电话接不到可以投诉吗)

  • 苹果下面的横条不见了(苹果下面的横条怎么开启)

    苹果下面的横条不见了(苹果下面的横条怎么开启)

  • 路由器sys常亮处理方式(路由器指示灯sys长亮)

    路由器sys常亮处理方式(路由器指示灯sys长亮)

  • ipad可以钉钉打卡吗(ipad上钉钉可以打卡吗)

    ipad可以钉钉打卡吗(ipad上钉钉可以打卡吗)

  • 微信投诉几次会封号(微信投诉几次会封群)

    微信投诉几次会封号(微信投诉几次会封群)

  • 苹果11支持双4g吗(苹果11支持双卡双待吗?)

    苹果11支持双4g吗(苹果11支持双卡双待吗?)

  • 苹果11支持多大快充(苹果11支持多大的无线充电)

    苹果11支持多大快充(苹果11支持多大的无线充电)

  • 斗鱼房管怎么禁别人言(斗鱼房管禁言提示是什么)

    斗鱼房管怎么禁别人言(斗鱼房管禁言提示是什么)

  • ipadair2019电池容量(ipadair2020电池容量)

    ipadair2019电池容量(ipadair2020电池容量)

  • 抖音修改资料被锁定多久能改(抖音修改资料被限制30天了)

    抖音修改资料被锁定多久能改(抖音修改资料被限制30天了)

  • 苹果xr有没有电池百分比(苹果xr有没有电话录音功能)

    苹果xr有没有电池百分比(苹果xr有没有电话录音功能)

  • 联想电脑黑屏按f几号键(联想电脑黑屏按什么键恢复亮屏)

    联想电脑黑屏按f几号键(联想电脑黑屏按什么键恢复亮屏)

  • 澳大利亚哈梅林浦 (© Abstract Aerial Art/Getty Images)(梅林澳大利亚信号好最好吗)

    澳大利亚哈梅林浦 (© Abstract Aerial Art/Getty Images)(梅林澳大利亚信号好最好吗)

  • 解决:code ERESOLVE:ERESOLVE could not resolve 的报错问题(解决的英文)

    解决:code ERESOLVE:ERESOLVE could not resolve 的报错问题(解决的英文)

  • 企业固定资产入账新标准
  • 小规模纳税人升级一般纳税人流程
  • 房地产业所得税
  • 研发费用加计扣除是什么意思啊
  • 上下班出了事故算不算工伤
  • 一般纳税人销售使用过的固定资产
  • 对公账户转个人账户
  • 回购股份进行股权激励会计分录
  • 报关单上单位名称写千克还是kg
  • 生产企业电梯维修方案
  • 借款利息收入增值税税负率
  • 土地增值税清算的条件
  • 主营业务税金及附加大概比例
  • 支付装修押金会退吗
  • 查账征收改为核定征收需要什么资料
  • 餐饮业收入的会计分录及摘要
  • 简易计税分包款进项税可以抵扣吗
  • win7绝地求生帧数不稳定
  • 非公开发行股票是利好还是利空
  • 股利分配账务处理
  • 公司网银付款和付款区别
  • 系统之家一键重装系统步骤
  • PHP:pg_unescape_bytea()的用法_PostgreSQL函数
  • 非合理损耗会计分录
  • windows不能打开exe文件
  • 储金会是干什么的
  • 不能抵扣的发票可以做成本吗
  • 企业收到海河工厂发运的乙材料,并验收入库
  • 软件产品即征即退申请表
  • svg如何嵌入html5
  • php流程图
  • php use关键字
  • 外包人员的餐费可以全部扣除吗
  • 增值税普通发票查询真伪
  • 事业单位财政拨款收入会计分录
  • 残保金计提和缴纳分录
  • mysql5.7设置编码
  • 核定征收企业所得税应税所得率
  • 其他资本公积可以冲减吗
  • 公司股东向银行货款,与私人财产有没有关系
  • 税率为0的发票能用吗
  • 天使投资
  • 其它应付款的审计内容
  • sql2008强制还原数据库
  • 其他应收款财务报表取数
  • 物流公司卖车合法么
  • 增值税发票内容填写不全应如何进行处理?
  • 电子商业汇票怎么接收
  • 跨年租金如何处理
  • 房地产企业收到政府补助
  • 企业承担个人所得税分录怎么做
  • 农产品加计扣除1%怎么计算和会计分录
  • 研发费用加计扣除比例及计算方法
  • 如何结转生产成本及制造费用
  • 存货跌价准备的账务处理
  • 会计收入的定义和分类
  • 积分中的换元怎么使用
  • mysql precision
  • workbench如何运行
  • win10预览版和正式版
  • win10系统如何清洗打印机喷头
  • win7win10双硬盘双系统
  • 如何查看win7系统
  • 日历插件vue
  • jquery虚拟dom
  • python创建二维数据表
  • jquery 插件写法
  • vue组件互相嵌套
  • js表单事件有哪些
  • 可交互原型是什么
  • ug编程代码意思
  • python迭代算法举例
  • 教你怎样用气球做可爱小兔子气球君带你做气球手工
  • python中字典怎么用
  • python的设置
  • javascript面向对象编程指南
  • 广东省税务登记网
  • 税控盘如何分配发票
  • 2020年海南个人所得税新规定
  • 税务发票小助手 小程序二维码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设