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主要是控制数据流向,是 ...
随机推荐
- C++11 线程同步接口std::condition_variable和std::future的简单使用
std::condition_variable 条件变量std::condition_variable有wait和notify接口用于线程间的同步.如下图所示,Thread 2阻塞在wait接口,Th ...
- QT数据可视化框架编程实战之三维柱状图_补天云QT技术培训专家
QT数据可视化框架编程实战之三维柱状图_补天云QT技术培训专家 文章目录 QT数据可视化框架编程实战:三维柱状图可视化运行效果 主程序实现C++代码 主场景 QML代码 坐标轴QML代码 数据模型定义 ...
- 常用的linux命令 docker常用命令
mkdir 新建目录 rmdir 删除目录 rm只能删除文件,不能删除目录 cp test.txt Documents 进入容器的目录 docker exec -it <container_id ...
- HRM平台 - 组织结构的渲染
组织结构是一个公司的灵魂 ,多使用树型结构 : 页面格式: 渲染头部 : 头部代码: <template> <el-row type="flex" justify ...
- gost socks5代理
购买云主机 开放所有tcp端口 配置云主机 https://mirrors.tuna.tsinghua.edu.cn/elrepo/kernel/el8/x86_64/ 选择清华镜像源 [root@i ...
- 手撸二叉树——AVL平衡二叉树
还记得上一篇中我们遗留的问题吗?我们再简要回顾一下,现在有一颗空的二叉查找树,我们分别插入1,2,3,4,5,五个节点,那么得到的树是什么样子呢?这个不难想象,二叉树如下: 树的高度是4,并且数据结构 ...
- charles+Nox
Charles设置 一.添加SSL证书  ![2](C:\Users\Lifree\D ...
- 记一次pip/pip3安装uwsgi报错
背景 本来是想着在centos 7.9的主机上面部署一个flask应用,采用的方式是linux+nginx+uwsgi来进行发布,其他的都没有问题,但是在使用pip安装uwsgi时报错了,安装不成功, ...
- manim边做边学--通用三维坐标系
ThreeDAxes是Manim中用于创建三维坐标系的类. 在数学.物理和工程等领域,三维坐标系的绘制是非常重要的. ThreeDAxes使得用户能够在动画中直观地展示三维空间中的对象和关系,从而提高 ...
- duxapp放弃了redux,在duxapp中局部、全局状态的实现方案
全局状态 全局状态是一个很实用的功能,例如管理用户信息,组件间状态共享等功能都需要用到全局状态,react有很多成熟的全局状态管理工具,但是很多写起来太过麻烦,duxapp提供了几种应对不同场景的全局 ...