Ant-Design-Pro-V5 :ProTable自定义搜索菜单操作栏和搜索事件、列表工具栏操作。

news/2024/7/15 18:14:37 标签: javascript, 前端, react.js
javascript">import React, { useRef, useState, useEffect } from 'react';
import { Button, Form } from 'antd';
import { PageContainer, ProTable} from '@ant-design/pro-components';
const Demo= () => {
const beforeSearchSubmit = (params) => {
    //par 就是你搜索表单输入的内容
}
const exportExcel = (params) => {
  console.log(params);
};
 <ProTable
        headerTitle="查询表格"
        columns={columnsData}
        rowKey="key"
        formRef={formRef}
        params={
          params
        }
        beforeSearchSubmit={beforeSearchSubmit}
        search={{
          labelWidth: 100,
          span: 12,
          optionRender: ({searchText, resetText}, {form}, dom) => [
            <Button type="primary" onClick={() =>exportExcel({...formRef.current?.getFieldsValue(),})}>导出</Button>,
            <Button
              key="searchText"
              type="primary"
              onClick={() => {
                // console.log(params);
                form?.submit();
              }}
            >
              {searchText}
            </Button>,
            <Button
              key="resetText"
              onClick={() => {
                form?.resetFields();
              }}
            >
              {resetText}
            </Button>
          ]
        }}
        request={(params) => {
          return getStorageAPI(params,searchParams)
        }}
      />
    }
export default Demo;
  1. 自定义搜索菜单操作栏和搜索事件

用到的API :search、beforeSearchSubmit

search
optionRender : 自定义搜索操作栏
searchText, resetText对应组件自身提供的搜索和重置按钮,我需要在这两个按钮前面加上自己的其他操作,比如搜索类型等等,效果如下图:
在这里插入图片描述
beforeSearchSubmit

自定义搜索操作事件:
proTable 默认是把搜索框的内容直接放到了表格的 params 里面的,有些时候我们的搜索字段可能需要更改,或者后台需要的数据格式比较特殊,这个时候我们就可以在这里做操作了

注意: 如果你配置了该方法,那么查询事件就会失效,你可以在这个方法里通过更新 params的方式来实现更新表格

另外 如果想更改搜索表单的key,在colums里的formItemProps属性可以实现,代码如下:

javascript">const columnsData = [
    {
      title: 'pool',
      dataIndex: 'pool',
      valueType: 'textarea',
      ellipsis: true,
      copyable: true,
      tip: '标题过长会自动收缩',
      formItemProps: {label: 'xxxx'}, //修改查询表单的label值
    }
]
  1. 列表工具栏操作

用到的API :columnsState(受控的列状态,可以操作显示隐藏)
在这里插入图片描述

部分代码:

javascript">  const [columnsStateMap, setColumnsStateMap] = useState(() => {
    //从缓存里面获取ColumnsState
    return JSON.parse(localStorage.getItem('storeManagementSeeting')) || {};
  });
 
  const handleOnChangeColumn = (map,ColumnsState) => {
    setColumnsStateMap(map);
  }
      
 <ProTable
          headerTitle="查询表格"
          columns={columns}
          rowKey="key"
          params={
            params
          }
          beforeSearchSubmit={beforeSearchSubmit}
          search={{
            labelWidth: 100,
            span: 12,
            optionRender: ({searchText, resetText}, {form}, dom) => [
              <Button type="primary" onClick={() => confirm(form)}>check</Button>,
              <Dropdown overlay={menu}>
                <Button type="primary" >
                  {selectedKeys === 'like' ? 'Normal' : selectedKeys === 'equal' ? 'Accurate' : selectedKeys} <DownOutlined />
                </Button>
              </Dropdown>,
              <Button
                key="searchText"
                type="primary"
                onClick={() => {
                  // console.log(params);
                  form?.submit();
                }}
              >
                {searchText}
              </Button>,
              <Button
                key="resetText"
                onClick={() => {
                  form?.resetFields();
                }}
              >
                {resetText}
              </Button>
            ]
          }}
          // columnsStateMap={columnsStateMap}
          columnsState={{ //列设置-操作
            value:columnsStateMap, //列状态的值,支持受控模式
            onChange: handleOnChangeColumn, //列状态的值发生改变之后触发
            persistenceKey:'storeManagementSeeting', //持久化列的 key,用于判断是否是同一个 table,会存在缓存里去
            persistenceType:'localStorage' //持久化列的类类型, localStorage 设置在关闭浏览器后也是存在的,sessionStorage 关闭浏览器后会丢失
          }}
          pagination={false}
          request={(params) => {
            return getStorageAPI(params)
          }}       
       />

http://www.niftyadmin.cn/n/5053278.html

相关文章

Nginx之memcached_module模块解读

目录 基本介绍 安装添加模块 模块配置指令 基本介绍 nginx的memcached_module模块可以直接从memcached服务器中读取内容后输出&#xff0c;后续的请求不再经过应用程序处理&#xff0c;如php-fpm、django&#xff0c;大大的提升动态页面的速度。nginx只负责从memcach…

【ppt技巧】给ppt文件设置带有密码的只读模式

有没有同学&#xff0c;想要给PPT文件设置修改权限&#xff0c;却没有找到功能&#xff0c;给PPT文件设置只读模式&#xff0c;没有密码设置的&#xff1f;今天给大家分享给PPT文件设置带有密码的只读模式&#xff08;修改权限&#xff09;。 打开PPT文件之后&#xff0c;将PP…

JSON.stringify格式化数据美化显示效果(不呆板地一行显示)

一.JSON.stringify 语法: JSON.stringify(value[, replacer[,space]])第二个参数replacer: 过滤属性或者处理值第三个参数space: 美化输出格式 第一个参数: 对象object等 第二个参数replacer: 如果该参数是一个函数: 则在序列化的过程中,被序列化的值的每个属性都会经过该函…

聊聊常见的IO模型 BIO/NIO/AIO 、DIO、多路复用等IO模型

文章目录 一、前言1. 什么是IO模型2. 为什么需要IO模型 二、常见的IO模型1. 同步阻塞IO&#xff08;Blocking IO&#xff0c;BIO&#xff09;2. 同步非阻塞IO&#xff08;Non-blocking IO&#xff0c;NIO&#xff09;3. 异步非阻塞IO&#xff08;Asynchronous IO&#xff0c;AI…

设计模式 - 享元模式

目录 一. 前言 二. 实现 一. 前言 享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;它主要解决的问题是创建大量相似对象时的内存开销问题。该模式通过共享具有相同状态的对象来减少内存使用量。 享元模式的思想是&#xff1a;当需要创建…

字节一面:说说HTTP 常见的状态码有哪些,适用场景?

前言 最近博主在字节面试中遇到这样一个面试题&#xff0c;这个问题也是前端面试的高频问题&#xff0c;我们经常与网路请求打交道&#xff0c;与http打交道&#xff0c;也会根据返回的状态码来做出不同逻辑判断&#xff0c;所以作为一个前端工程师必须要深入掌握这个知识点&am…

埃森哲:“现在是每个企业采用边缘技术的时候了”

埃森哲的最新报告认为&#xff0c;企业需要立即采取行动&#xff0c;以避免在边缘计算方面落后&#xff0c;与云、数据和人工智能的集成对于以经济实惠的方式加速创新至关重要。 简单说&#xff1a; 边缘将成为无处不在的规模化和重塑杠杆&#xff0c;尤其是随着人工智能在企业…

ChatGPT很好,但千万别用来写留学文书!

大家必须承认一件事&#xff0c;大多数申请者和 ChatGPT 相比&#xff0c;ChatGPT 产出的文章质量更高—— ChatGPT语言更精准 ChatGPT文章结构更严谨 ChatGPT行文更流畅 …… 但是为什么仍然不建议大家利用人工智能来撰写申请文书呢&#xff1f; 文书至关重要——比大…