一、 params 和 request 属性的使用

例子如下:

import React, { useState } from 'react';
import { ProTable } from '@ant-design/pro-table'; const columns = [
{
title: '姓名',
dataIndex: 'name',
},
{
title: '年龄',
dataIndex: 'age',
sorter: true,
},
{
title: '地址',
dataIndex: 'address',
},
]; const DemoTable = () => {
const [params, setParams] = useState({ current: 1, pageSize: 20 }); const fetchData = async (params) => {
const { current, pageSize, sorter } = params;
const response = await fetch(`/api/data?current=${current}&pageSize=${pageSize}&sorter=${sorter}`);
const data = await response.json();
return {
data: data.list,
total: data.total,
success: true,
};
}; return (
<ProTable
request={fetchData}
params={params}
onParamsChange={setParams}
columns={columns}
/>
);
};

在这个示例中,定义了一个表格组件DemoTable,其中包含了一个ProTable组件。ProTable组件的request属性和params属性分别指定了数据请求的回调函数和请求参数,用于向服务端获取表格数据。onParamsChange属性则指定了params状态的更新函数,用于在用户翻页或者修改每页展示数量时,更新请求参数并重新渲染表格。

fetchData函数中,使用params对象中的属性来构造请求参数,并通过fetch函数向服务端发送请求。服务端返回的数据包括了表格数据和总条数等信息。在函数返回时,需要将数据结构转换为ProTable组件所需的格式,即包含了datatotalsuccess三个属性的对象。

二、ProTable 的练习

import React, { useState, useRef } from 'react';
import ProTable from '@ant-design/pro-table';
import { ProForm, ProFormText } from '@ant-design/pro-form';
import './index.less';
import { getConfigList } from '@/services/@xzfy/config';
import { Drawer, Button, message } from 'antd';
import { PlusCircleOutlined } from '@ant-design/icons';
import { WaterMark } from '@ant-design/pro-layout';
import { tableColums } from './tableColumns';
import AddOrEdit from '../SystemManagement/dictManagement/addOrEdit'; export default function index() {
// 获取表单元素
const form = useRef();
// 控制抽屉的开关
const [open, setOpen] = useState(false);
//
const [currRecord,setCurrRecord] = useState(null);
// 定义抽屉标题
const [title, setTitle] = useState();
// 点击“ 编辑 ”按钮获取该行的数据
const [currentRow, setCurrentRow] = useState(); // 定义表格列
const columns = [
...tableColums,
{
title: '操作',
valueType: 'option',
align: 'center',
width: 100,
render: (_, record) => {
return [
<a
key="edit"
onClick={() => {
console.log(record);
setCurrentRow(record);
setTitle('编辑');
setOpen(true);
}}
>
编辑
</a>,
];
},
},
]; // 点击“ 新增 ” 按钮后
const add = () => {
setTitle('新增');
// setCurrRecord()
setOpen(true);
};
// 关闭抽屉
const drawerClose = () => {
setOpen(false);
setCurrentRow(null);
}; // 表单重置
const FormReset = () => {
// 不能用这个的方式原因是CurrentRow被设置成表单的初始值,第一次点击重置的时候,会后退到初始化值的状态,然后第二次点击的时候才可以把初始值变为undefined
// setCurrentRow(undefined);
form.current.setFieldsValue({
configKey: '',
configValue: '',
configDesc: '',
});
}; // 表单提交
const FormFinish = () => {
if (title == '编辑') {
message.success('编辑成功!');
setOpen(false);
} else if (title == '新增') {
message.success('新增成功!');
setOpen(false);
}
}; return (
<div className="tabBox">
<WaterMark content="大美女">
<ProTable
// options={false} // 用于配置表格的一些基本选项。这个属性可以设置为一个对象,包含多个选项,用于控制表格的分页、密度、搜索、导出等功能。
rowKey="id"
request={getConfigList} // 需要获取数据时,会调用"request"属性所指定的函数,并将当前的查询参数、排序规则、过滤条件等信息作为参数传递给这个函数。这个函数需要返回一个Promise对象,表示异步操作的结果。当ProTable组件获取到异步操作的结果后,会自动更新表格的数据源,并重新渲染表格。
columns={columns} // 定义表格的列信息。
cardBordered={false} // 在表格外部添加一个带边框的卡片容器
pagination={{ pageSize: 5 }} // 用于配置分页功能的相关参数,包括当前页码、每页显示的数据条数、总数据条数等
toolBarRender={() => (
<Button type="primary" shape="round" icon={<PlusCircleOutlined />} onClick={add}>
新增
</Button>
)} // 用于自定义表格工具栏的渲染内容。这个属性接受一个函数作为参数,用于渲染工具栏的内容。
/>
{open?<AddOrEdit visible={open} record={ currRecord} />:''}
<Drawer
destroyOnClose // 用于控制弹窗是否在关闭时销毁组件实例。
title={title}
placement="right"
onClose={drawerClose}
open={open}
>
<ProForm
initialValues={currentRow}
formRef={form}
onReset={FormReset}
onFinish={FormFinish}
>
<ProFormText
width="md"
name="configKey"
label="配置键"
placeholder="请输入配置键"
rules={[{ required: true }]} // 必填项
/>
<ProFormText
width="md"
name="configValue"
label="配置值"
placeholder="请输入配置值"
rules={[{ required: true }]}
/>
<ProFormText
width="md"
name="configDesc"
label="配置描述"
placeholder="请输入配置描述"
rules={[{ required: true }]}
/>
</ProForm>
</Drawer>
</WaterMark>
</div>
);
}

运行结果:

三、表格的数据换行

示例图:

分析:

利用 render 属性来实现换行的效果

代码如下:

const data = [
{ id: 1, isSigning: '签约状态1',stateYw:0, belongingArea: '区域1', orgName: '机构1' },
{ id: 2, isSigning: '签约状态2',stateYw:1, belongingArea: '区域2', orgName: '机构2' },
{ id: 3, isSigning: '签约状态3',stateYw:0, belongingArea: '区域3', orgName: '机构3' },
{ id: 4, isSigning: '签约状态4',stateYw:1, belongingArea: '区域4', orgName: '机构4' },
{ id: 5, isSigning: '签约状态5',stateYw:0, belongingArea: '区域5', orgName: '机构5' },
];
// 定义状态的代表值
const StateYwMap = {
0:'未办理',
1:'办理中',
2:'办理完成'
} export const tableColums = [
{
title: '基本信息',
// hideInTable:true, // 此行不在表格里显示
search: false,
render:(text,record,index)=>{
return (
<div>
<div>机构名称:{record.orgName}</div>
<div>
业务状态:{
StateYwMap[record.stateYw]
}
</div>
<div>
签约状态:{
record.isSigning
}
</div>
</div>
)
}
}
]

四、封装proTable

ProTab(高级表格)的使用的更多相关文章

  1. 使用Vue.js制作仿Metronic高级表格(一)静态设计

    Metronic高级表格是Metonic框架中自行实现的表格,其底层是Datatables.本教程将主要使用Vue实现交互部分,使用Bootstrap做样式库.jQuery做部分用户交互(弹窗). 使 ...

  2. OAF中的TableLayout 高级表格

    我们经常会遇到这种情况,我们要把显示界面分成几块区域来分别显示不同的内容.比如在同一行左边显示messageComponentLayout,右边显示table,这时,我们就要用到tableLayout ...

  3. 【共享单车】—— React后台管理系统开发手记:AntD Table高级表格

    前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...

  4. html02表格的使用

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. html表格的基本用法

    表格的基本用法 1.<!DOCTYPE html><html><head lang="en"> <meta charset="U ...

  6. 获取extjs text列修改过 数据

    ExtJS中表格的特性简介 表格由类Ext.grid.GridPanel定义,继承自Ext.Panel,xtype为grid 表格的列信息由Ext.grid.ColumnModel定义 表格的数据存储 ...

  7. flex控件总结

    Flex基本控件总结 一.flex控件的分类:文本控件(text controls).数据源控件(data provider controls).菜单控件       (menu  controls) ...

  8. JSF初学之概念篇1

    先转一篇介绍JSF的文章: Javaserver Faces 简介 — 什么是 JSF? 作者:Chris Schalk,Oracle Corporation2005 年 4 月 什么是 JSF? J ...

  9. PHPWord插件详解

    一下载PHPWorld并配置项目 1.PHPWord框架文件如下: 二使用word模板并使用PHPWord生成doc文件 例如:源代码如下: <?php require_once '../PHP ...

  10. HTML5⑥

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

随机推荐

  1. Java 中初始化 List 的五种方法

    1.构造 List 后使用 List.add 初始化 1 List<String> stringList = new LinkedList<>(); 2 stringList. ...

  2. linux挂载磁盘和设置开机自动挂载

    1.查看分区信息 root@xmgl opt]# fdisk -l ......此处省略一些信息 Disk /dev/sdb: 644.2 GB, 644245094400 bytes, 125829 ...

  3. com.alibaba.fastjson.JSONException: create instance error

    很早之前在使用FashJson进行实体类转化的时候,如果json参数是多层都是一层对应一个单独的实体类, 今天在项目中想,使用内部类是不是也可以实现,且使用内部类封装性更好.当将json串使用fast ...

  4. 6. 配置项:relabel_config

    6.1relabel_config的位置 6.2 relabel_config参数详解 1.replace 2. keep 3.drop 6.labelkeep 7.hashmod 6.3 正则表达式 ...

  5. APB Slave设计

    APB Slave位置 实现通过CPU对于APB Slave读写模块进行读写操作 规格说明 不支持反压,即它反馈给APB的pready信号始终为1 不支持错误传输,就是说他反馈给APB总线的PSLVE ...

  6. .NET开源的简单、快速、强大的前后端分离后台权限管理系统

    前言 今天分享一款前端基于Vue3,后端基于.NET8开源的免费(MIT license).简单.快速.强大的前后端分离后台权限管理系统:中台Admin(Admin.Core). 项目官方介绍 中台A ...

  7. 【ThreadX-GUIX】Azure RTOS GUIX和Azure RTOS GUIX Studio概述

    Azure GUIX嵌入式GUI是Microsoft的高级工业级GUI解决方案,专门针对深度嵌入式,实时和IoT应用程序而设计.Microsoft还提供了名为Azure RTOS GUIX Studi ...

  8. DASCTF X CBCTF 2023|无畏者先行 CRYPTO—WP

    EzRSA 1.题目信息 from Crypto.Util.number import * import random from gmpy2 import * from libnum import * ...

  9. JS - console多个值

     Promise.all([p1, p2]).then(         (res) => {           let [p1, p2] = res;           console.l ...

  10. 快速定位Java应用卡顿的原因

    快速定位Java应用卡顿的原因 背景 同事的环境说出现了一周的卡顿现象. 元旦加班期间告诉我时已经是2024.1.1下午五点了. 当时没有来得及去查看. 上班之后发现问题很简单. 不过为了能够指导一下 ...