ProTab(高级表格)的使用
一、 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
组件所需的格式,即包含了data
、total
和success
三个属性的对象。
二、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(高级表格)的使用的更多相关文章
- 使用Vue.js制作仿Metronic高级表格(一)静态设计
Metronic高级表格是Metonic框架中自行实现的表格,其底层是Datatables.本教程将主要使用Vue实现交互部分,使用Bootstrap做样式库.jQuery做部分用户交互(弹窗). 使 ...
- OAF中的TableLayout 高级表格
我们经常会遇到这种情况,我们要把显示界面分成几块区域来分别显示不同的内容.比如在同一行左边显示messageComponentLayout,右边显示table,这时,我们就要用到tableLayout ...
- 【共享单车】—— React后台管理系统开发手记:AntD Table高级表格
前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...
- html02表格的使用
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- html表格的基本用法
表格的基本用法 1.<!DOCTYPE html><html><head lang="en"> <meta charset="U ...
- 获取extjs text列修改过 数据
ExtJS中表格的特性简介 表格由类Ext.grid.GridPanel定义,继承自Ext.Panel,xtype为grid 表格的列信息由Ext.grid.ColumnModel定义 表格的数据存储 ...
- flex控件总结
Flex基本控件总结 一.flex控件的分类:文本控件(text controls).数据源控件(data provider controls).菜单控件 (menu controls) ...
- JSF初学之概念篇1
先转一篇介绍JSF的文章: Javaserver Faces 简介 — 什么是 JSF? 作者:Chris Schalk,Oracle Corporation2005 年 4 月 什么是 JSF? J ...
- PHPWord插件详解
一下载PHPWorld并配置项目 1.PHPWord框架文件如下: 二使用word模板并使用PHPWord生成doc文件 例如:源代码如下: <?php require_once '../PHP ...
- HTML5⑥
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
随机推荐
- POJ:1511 Invitation Cards(双向搜索最短路径)
POJ :1511 http://poj.org/problem?id=1511 思路 求1号点到其他点的最短路 + 其他点到1号点的最短. 结果用long long. 用快读可以加快时间 代码 sp ...
- L1-048 矩阵A乘以B (15分)
给定两个矩阵A和B,要求你计算它们的乘积矩阵 \(AB\).需要注意的是,只有规模匹配的矩阵才可以相乘.即若A有 \(R_a\) 行.\(C_a\) 列,B有 \(R_b\) 行.\(C_b\) 列, ...
- 二、redis主从环境搭建
系列导航 一.redis单例安装(linux) 二.redis主从环境搭建 三.redis集群搭建 四.redis增加密码验证 五.java操作redis 环境:centos7需要的安装包: redi ...
- MaxListenersExceededWarning:Possible EventEmitter memory leak detected.
打包出现内存溢出 解决办法:
- Java 内存管理最佳实践
本文翻译自国外论坛 medium,原文地址:https://medium.com/@fullstacktips/best-practices-for-memory-management-in-java ...
- 编写Java代码时应该避免的6个坑
通常情况下,我们都希望我们的代码是高效和兼容的,但是实际情况下代码中常常含有一些隐藏的坑,只有等出现异常时我们才会去解决它.本文是一篇比较简短的文章,列出了开发人员在编写 Java 程序时常犯的错误, ...
- 基于html5+javascript技术开发的房贷利率计算器,买房的码农们戳进来
房贷计算器是一款专为购房者设计的实用工具应用,其主要功能是帮助用户详细计算房贷的还款金额.利息以及还款计划等.通过这款软件,用户可以更加便捷地了解到自己的还款情况和计划,从而更好地规划自己的财务.下面 ...
- java - 运行可执行文件 (.exe)
package filerun; import java.io.File; import java.io.IOException; public class RunExe { public stati ...
- Go-方法-method
- Cloudquery的学习安装与使用
Cloudquery的学习安装与使用 下载 官方下载地址: https://www.cloudquery.club/download https://pan.baidu.com/s/1a7XOrnMU ...