Ant Design Pro项目ProTable怎么获取搜索表单值
前情
公司有经常需要做一些后台管理页面,我们选择了Ant Design Pro,它是基于 Ant Design 和 umi 的封装的一整套企业级中后台前端/设计解决方案。
产品效果图
最新接到的一个后台管理界面需求,如下图。需要实现数据导出功能,ProTable搜索栏默认有重置和查询按钮,所以需要增加一个导出按钮,那导出的条件是依赖搜索条件的,不像查询按钮本身就会触发request方法,里面可以拿到搜索表单的值。

解决方案
方式1:使用useRef,通过ProTable的fromRef获取表单对象,再通过表单对象下的getFieldsValue获取所有表单值,也可以以通过getFieldValue(key)获取单个表单值
关键代码:
const proTableFormRef = useRef<ProFormInstance>();
const exportBookingData = () => {
const formFieldsValue = proTableFormRef.getFieldsValue();
// 这里可以查到当前搜索表单的值
console.log('---- exportBookingData ----:', formFieldsValue );
// 接接参数,发起请求
...
};
...
<ProTable
size="middle"
rowKey="id"
columns={columns}
formRef={proTableFormRef}
actionRef={actionFormRef}
options={{ reload: false, density: false, fullScreen: true }}
search={{
labelWidth: 'auto',
optionRender: ({ searchText, resetText }, { form }) => {
return [
<Button
key="reset"
style={{ marginRight: '10px' }}
onClick={() => {
actionFormRef?.current?.reset();
}}
>
{resetText}
</Button>,
<Button key="search" type="primary" htmlType="submit" style={{ marginRight: '10px' }}>
{searchText}
</Button>,
<Button
key="export"
loading={isExportIng}
type="primary"
onClick={exportBookingData}
>
导出
</Button>,
];
},
}}
pagination={{
size: 'default',
defaultPageSize: 10,
showTotal: (total) => `共 ${total} 条`,
}}
request={requestBookingDataList}
/>
方式2:在通过search下的optionRender方法自定导出按钮的时候,它的第二个参数可以查到当前搜索表单对象,可以把此表单对象直接传给导出事件绑定的方法,再通过表单对象下的getFieldsValue获取所有表单值,也可以以通过getFieldValue(key)获取单个表单值
关键代码:
const exportBookingData = (form) => {
const formFieldsValue = form.getFieldsValue();
// 这里可以查到当前搜索表单的值
console.log('---- exportBookingData ----:', formFieldsValue );
// 接接参数,发起请求
...
};
...
<ProTable
size="middle"
rowKey="id"
columns={columns}
formRef={proTableFormRef}
actionRef={actionFormRef}
options={{ reload: false, density: false, fullScreen: true }}
search={{
labelWidth: 'auto',
optionRender: ({ searchText, resetText }, { form }) => {
return [
<Button
key="reset"
style={{ marginRight: '10px' }}
onClick={() => {
actionFormRef?.current?.reset();
}}
>
{resetText}
</Button>,
<Button key="search" type="primary" htmlType="submit" style={{ marginRight: '10px' }}>
{searchText}
</Button>,
<Button
key="export"
loading={isExportIng}
type="primary"
onClick={() => exportBookingData(form)}
>
导出
</Button>,
];
},
}
pagination={{
size: 'default',
defaultPageSize: 10,
showTotal: (total) => `共 ${total} 条`,
}}
request={requestBookingDataList}
/>
- 注:二种方式都可以完成此需求,从使用方便考虑,推荐第二种
思考
定义一个标志变量,标示当前是查询还是导出,在导出的时候主动触发查询方法,在查询方法里
拿到表单值,再把当前的表单值用于导出请求,方法千千W,你是否有更好的方式推荐了?期待你的分享。
Ant Design Pro项目ProTable怎么获取搜索表单值的更多相关文章
- Ant Design Pro项目打开页设为登录或者其他页面
Ant Design Pro项目打开页设为登录或者其他页面 一.打开页设为登录页 首先找到utils包中的authority文件,在该文件中找到如下代码: export function getAut ...
- 【后台管理系统】—— Ant Design Pro 项目爬坑(一)
1.表单rule中可以分对象处理不同规则 <FormItem label="类型名称" {...formLayout}> { form.getFieldDecorato ...
- ant design pro(一)安装、目录结构、项目加载启动【原始、以及idea开发】
一.概述 1.1.脚手架概念 编程领域中的“脚手架(Scaffolding)”指的是能够快速搭建项目“骨架”的一类工具.例如大多数的React项目都有src,public,webpack配置文件等等, ...
- 使用ant design pro搭建项目
脚手架搭建 git clone --depth=1 https://github.com/ant-design/ant-design-pro.git my-project 然后 cd my-proje ...
- 阿里开源项目之Ant Design Pro
本篇文章主要包含的内容有三个方面. 第一.Ant Design Pro简介; 第二.Ant Design Pro能做什么; 第三.初步使用; 我相信通过这三个方面的讲解能让你大概知道Ant Desig ...
- 【后台管理系统】—— Ant Design Pro入门学习&项目实践笔记(三)
前言:前一篇记录了[后台管理系统]目前进展开发中遇到的一些应用点,这一篇会梳理一些自己学习Ant Design Pro源码的功能点.附:Ant Design Pro 在线预览地址. Dashboard ...
- Ant Design Pro+Electron+electron-builder实现React应用脱离浏览器,桌面安装运行
ant-design-pro ----> version :2.3.1 由于网上Ant Design Pro+Electron的资料太少,我就贡献一点经验 最近需要讲AntD Pro项目(以 ...
- ant design pro (十五)advanced 使用 API 文档工具
一.概述 原文地址:https://pro.ant.design/docs/api-doc-cn 在日常开发中,往往是前后端分离的,这个时候约定好一套接口标准,前后端各自独立开发,就不会被对方的技术难 ...
- Ant Design Pro快速入门
在上一篇文章中,我们介绍了如何构建一个Ant Design Pro的环境. 同时讲解了如何启动服务并查看前端页面功能. 在本文中,我们将简单讲解如何在Ant Design Pro框架下实现自己的业务功 ...
- Ant Design Pro 脚手架+umiJS 实践总结
一.简介 1.Ant Design Pro Ant Design Pro是一款搭建中后台管理控制台的脚手架 ,基于React,dva.js,Ant Design (1)其中dva主要是控制数据流向,是 ...
随机推荐
- Spring —— bean生命周期
bean生命周期 生命周期:从创建到消亡的完整过程 bean生命周期:bean从创建到销毁的整体过程 bean生命周期控制:在bean创建后到销毁前做一些事情 方式一:配置控制生命周期 <b ...
- Response状态码
1.数据是否正常 2.文件是否存在 3.地址自动跳转 4.服务提供错误 注:容错处理识别 •-1xx:指示信息-表示请求已接收,继续处理. •-2xx:成功-表示请求已经被成功接收.理解.接受. •- ...
- 离线安装Redis
redis 直接去官网下载tar包就可以 主要是gcc 环境的安装包不太好找,我下载的还缺少 make 如果服务器比较干净,还得预装一下lrzsz-0.12.20.tar.gz 上传下载文件,unzi ...
- 2023年1月中国数据库排行榜:OceanBase 持续两月登顶,前四甲青云直上开新局
一元复始,万象更新. 国产数据库在经历过耕获菑畲的一年后,产品.生态.人才队伍建设等都取得了重大的进展.2023年1月 墨天轮中国数据库流行度排行 火热出炉,本月排行榜"属性"列新 ...
- 使用DeepKE训练命名实体识别模型DEMO(官方DEMO)
使用DeepKE训练命名实体识别模型DEMO(官方DEMO) 说明: 首次发表日期:2024-10-10 DeepKE资源: 文档: https://www.zjukg.org/DeepKE/ 网站: ...
- webgl和canvas的区别
webgl和canvas的区别 WebGL和Canvas的主要区别在于它们的渲染方式.功能复杂性.以及编程难度.12 渲染方式:Canvas使用2D渲染上下文来绘制图形和图像,基于像素的绘图系统, ...
- 06 - react的类组件中的状态state render函数 this指向问题 事件绑定
// 注册事件 import ReactDom from "react-dom" import { Component } from "react" // 类组 ...
- 6.19 成都站云原生 Meetup,KubeSphere 和 APISIX 等你来!
以容器技术和容器编排为基础的云原生应用,被越来越多的企业用户接受和使用,并且在生产环境中使用容器技术的比例逐年增加.KubeSphere 作为一款面向应用的开源容器混合云,经过 3 年的发展和 10 ...
- 使用 KubeSphere 部署高可用 RocketMQ 集群
作者:老Z,云原生爱好者,目前专注于云原生运维,KubeSphere Ambassador. Spring Cloud Alibaba 全家桶之 RocketMQ 是一款典型的分布式架构下的消息中间件 ...
- KubeSphere 多行日志采集方案深度探索
作者:大飞哥,视源电子运维工程师,KubeSphere 用户委员会广州站站长 采集落盘日志 日志采集,通常使用 EFK 架构,即 ElasticSearch,Filebeat,Kibana,这是在主机 ...