一、 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. 在 Ubuntu 20.04 上安装 Visual Studio Code

    Visual Studio Code 是一个由微软开发的强大的开源代码编辑器.它包含内建的调试支持,嵌入的 Git 版本控制,语法高亮,代码自动完成,集成终端,代码重构以及代码片段功能. Visual ...

  2. AtCoder Beginner Contest 170 (D~F题,D筛法,E multiset使用,F Dijkstra算法改进)

    题目链接:Here ABC水题, D. Not Divisible 看了题解才想到,可以用 Sieve of Eratosthenes,因为 \(A_i\) 最大才 \(10^6\) 但有注意的点 1 ...

  3. 活动回顾|阿里云 Serverless 技术实战与创新广州站回放&PPT下载

    7月8日"阿里云 Serverless 技术实战与创新"广州站圆满落幕.活动受众以关注Serverless 技术的开发者.企业决策人.云原生领域创业者为主,活动形式为演讲.动手实操 ...

  4. mongoose学习记录

    1 const mongoose = require('mongoose'); 2 3 mongoose.connect('mongodb://localhost/playground') 4 .th ...

  5. python之pycharm常见使用技巧

    一.ctrl+d:复制

  6. 小白学标准库之 http

    1. 前言 标准库是工具,是手段,是拿来用的.一味的学标准库就忽视了语言的内核,关键.语言层面的特性,内存管理,垃圾回收.数据结构,设计模式.这些是程序的内核,要熟练,乃至精通它们,而不是精通标准库. ...

  7. ElasticSearch 通过 Kibana 与 ElasticSearch-head 完成增删改查

    本文为博主原创,未经允许不得转载: 1.  安装并配置 elasticSearch ,kibana, elasticsearch-head docker 安装 ElasticSearch 和 Kiba ...

  8. idea开发常用快捷键总结

    转载请注明出处: idea提供了很多的快捷键,但在开发过程中并发全用,只是常用部分快捷键,在这里总结一下,总结的不全,有好的快捷键可在评论里补充下,提前谢各位 由于很早之前用的eclipse或spri ...

  9. 使用pip安装pycharm插件时,要使用管理员权限打开cmd安装

    1.问题 安装到一半报错 报错1 报错2 2.解决 解决1 原文:https://blog.csdn.net/weixin_44899752/article/details/128372969 下面是 ...

  10. [转帖]两种Nginx日志切分方案,狼厂主要在用第1种

    两种Nginx日志切分方案,狼厂主要在用第1种 nginx的日志切分问题一直是运维nginx时需要重点关注的.本文将简单说明下nginx支持的两种日志切分方式. 一.定时任务切分 所谓的定时任务切分, ...