Ant Design Pro 之 ProTable使用操作


Posted in Javascript onOctober 31, 2020

标签<ProTable>

Ant Design Pro 之 ProTable使用操作

Pro-Table 是阿里Ant Design Pro V4版本,在Table基础上再封装的一个组件,包含完整的增删改查逻辑,不用复杂的操作,简单几个配置即可实现

官网Api地址

https://protable.ant.design/

示例

V4版本刚出不久,网上的教程还比较少,踩了不少坑,把自己学习过程分享出来,希望可以帮到你

创建项目(需要node.js及npm环境)

npm config set registry https://registry.npm.taobao.org
npm i yarn -g
yarn config set registry https://registry.npm.taobao.org
//进入你准备创建项目的目录
yarn create umi my-app
cd my-app
yarn
yarn start

创建项目完成后如图

Ant Design Pro 之 ProTable使用操作

登录后如图

Ant Design Pro 之 ProTable使用操作

添加菜单

V4版本目录结构有一些改变,影响不大,按步骤创建就行了

Ant Design Pro 之 ProTable使用操作

完成后,在basicCustomer.tsx中写入helloworld,测试能否成功访问

import React from "react"; 
class Customer extends React.Component{
 
 render(){
  return (
    <div>helloworld</div>
  );
 }
} 
export default Customer;

成功后用下面代码替换

import { DownOutlined, PlusOutlined } from '@ant-design/icons';
import { Button, Dropdown, Menu} from 'antd';
import React, { useRef } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import ProTable, { ProColumns, ActionType } from '@ant-design/pro-table';
import { selectPage } from './service'; 
 
const TableList: React.FC<{}> = () => {
 const actionRef = useRef<ActionType>();
 const columns: ProColumns[] = [
  {
   title: '客户名称',  //表头显示的名称
   dataIndex: 'name', // 列数据在数据项中对应的路径,支持通过数组查询嵌套路径
   width: '20%',
  },
  {
   title: '经营性质',
   dataIndex: 'nature',
   filters: [   // 表头的筛选菜单项
    { text: '个人', value: '个人' },
    { text: '一般纳税人', value: '一般纳税人' },
   ],
   width: '20%',
  },
  {
   title: '联系人',
   dataIndex: 'linkMan',
   hideInSearch : 'false', // 设置搜索栏是否显示
  },
  {
   title: '联系电话',
   dataIndex: 'linkPhone',
   hideInSearch : 'false',
  },
  {
   title: '税号',
   dataIndex: 'taxNumber',
  },
  {
   title: '状态',
   dataIndex: 'status',
   valueEnum: {        //当前列值的枚举
    false: { text: '禁用', status: 'Error' },    //false是后台传的值,text是页面显示的,status是antd提供的状态,具体看api
    true: { text: '启用', status: 'Success' },
   },
  },
 ];
 
 return (
  <PageHeaderWrapper>  //布局标签
   <ProTable      //表格Pro组件
    headerTitle="查询表格"  //表头
    actionRef={actionRef}  //用于触发刷新操作等,看api
    rowKey="id"        //表格行 key 的取值,可以是字符串或一个函数
    toolBarRender={(action, { selectedRows }) => [
     <Button icon={<PlusOutlined />} type="primary" onClick={()=>{}}>
      新建
     </Button>,
     selectedRows && selectedRows.length > 0 && (
      <Dropdown
       overlay={
        <Menu
         selectedKeys={[]}
        >
         <Menu.Item key="remove">批量删除</Menu.Item>
        </Menu>
       }
      >
       <Button>
        批量操作 <DownOutlined />
       </Button>
      </Dropdown>
     ),
    ]}
    request={(params) => selectPage(params)}//请求数据的地方,例子是用mock模拟数据,我是在后台请求的数据
    columns={columns}  //上面定义的
    rowSelection={{}}
   />
  </PageHeaderWrapper>
 );
}; 
export default TableList;

下面是请求数据的service

import Qs from "qs";
import request from "umi-request";
 
const getRandomuserParams = (params:any) => {
 return {
  pageSize: params.pageSize,
  pageIndex: params.current,
  ...params
 };
}; 
 
export async function selectPage(params:any) {
 console.log(getRandomuserParams(params))
 const res = request('/server/api/basic/basicCustomer/selectPageListCopy', {
  method: 'POST',
  headers:{
   'Content-Type':'application/x-www-form-urlencoded',
   appId: '1117664844619845632',
   token: 'eyJhbGciOiJIUzI1NiJ9.eyJuYmYiOjE1ODYzNDQ2MjcsImlkIjoiNzkxNzA2Y2Q2M2RiM2EwMSIsImV4cCI6MTU4ODkzNjYyNywiaWF0IjoxNTg2MzQ0NjI3fQ.Gtmm-TZHlMFiEV34ncrLryjzNsv07DwnCYsChQcYEWg'
  },
  data: Qs.stringify(getRandomuserParams(params)),
 });
 
 return res;
}

Ant Design Pro 之 ProTable使用操作

前后端分离会有跨域问题出现,这里在proxy里配置代理解决

Ant Design Pro 之 ProTable使用操作

'/server/api/'表示以此开头的请求都拦截,pathRewrite表示发送请求时,所省略的

配置完成后访问,

Ant Design Pro 之 ProTable使用操作

可以看到已经成功了,包括分页,以及表头筛选,条件查询都是可以用的,新增删除还没有写,等后面再补充吧!

补充知识:ant-design-pro的ProTable中column中设置valueEnum属性

如果是给定得默认值,使用如下:

{
   title: '是否过期',
   dataIndex: 'overdue',
   key: 'overdue',
   valueEnum: {
   0: {text: '未过期',},
   1: {text: '已过期',},
   },
 }

或者先定义

const enumList = {
 0: { text: '未过期' },
 1: { text: '已过期' },
 };
------------------------然后使用----------------------------
  {
      title: '是否过期',
      dataIndex: 'overdue',
      key: 'overdue',
      valueEnum: enumList
    }

但是如果valueEnum的值是通过接口获取的,比如说,你想用数据库里的用户id作为key,userName作为text:值,因为数据是会动态变化的,无法用枚举直接自定义,下面给出一种解决方法:

const [datas, setDatas] = useState({})
  useEffect(() => {
  //调用接口
   listOverdue().then((res) => {
   //如果响应成功
    if(res.bizCode===200){
     let data = {};
     //将拿到的返回值遍历
     res.data.map(item=>{
  //使用接口返回值的id做为 代替原本的0,1
      data[item.id]={
  //使用接口返回值中的overdueValue属性作为原本的text:后面的值
       text: item.overdueValue,
      }
     })
     setDatas(data) 
    }     
  })
 }, []);
 ----------------然后使用-----------------------------
 {
   title: '是否过期',
   dataIndex: 'overdue',
   key: 'overdue',
   valueEnum: datas
   }

这样就可以使用了啊~

以上这篇Ant Design Pro 之 ProTable使用操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js调用flash的效果代码
Apr 26 Javascript
JQuery操作textarea,input,select,checkbox方法
Sep 02 Javascript
如何利用AngularJS打造一款简单Web应用
Dec 05 Javascript
基于JQuery实现图片上传预览与删除操作
May 24 Javascript
Node.js 日志处理模块log4js
Aug 28 Javascript
weUI应用之JS常用信息提示弹层的封装
Nov 21 Javascript
Node.js 使用命令行工具检查更新
Jun 08 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
Jul 26 Javascript
详解微信小程序回到顶部的两种方式
May 09 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
Nov 21 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
Aug 03 Javascript
鸿蒙系统中的 JS 开发框架
Sep 18 Javascript
react ant Design手动设置表单的值操作
Oct 31 #Javascript
解决pycharm双击但是无法打开的情况
Oct 31 #Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
Oct 31 #Javascript
antd design table更改某行数据的样式操作
Oct 31 #Javascript
antd配置config-overrides.js文件的操作
Oct 31 #Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
Oct 31 #Javascript
Ant Design的可编辑Tree的实现操作
Oct 31 #Javascript
You might like
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
轻松入门: 煮好咖啡的七个诀窍
2021/03/03 冲泡冲煮
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
php通过记录IP来防止表单重复提交方法分析
2014/12/16 PHP
PHP中多线程的两个实现方法
2016/10/14 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
《JavaScript函数式编程》读后感
2015/08/07 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
ES6实现的遍历目录函数示例
2017/04/07 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
JSON 数据格式详解
2017/09/13 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
微信小程序获取当前位置和城市名
2019/11/13 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
2020/08/07 jQuery
[51:06]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS Liquid
2018/03/30 DOTA
python 中文字符串的处理实现代码
2009/10/25 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
django 外键创建注意事项说明
2020/05/20 Python
python 引用传递和值传递详解(实参,形参)
2020/06/05 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
使用postMessage让 iframe自适应高度的方法示例
2019/10/08 HTML / CSS
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
英语专业毕业生求职简历的自我评价
2013/10/24 职场文书
创意活动策划书
2014/01/15 职场文书
《蜗牛》教学反思
2014/02/18 职场文书
售后服务经理岗位职责
2014/02/25 职场文书
个人委托书
2014/07/31 职场文书
2014物价局民主生活会对照检查材料思想汇报
2014/09/24 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android
关于SpringBoot 使用 Redis 分布式锁解决并发问题
2021/11/17 Redis
Spring Data JPA框架Repository自定义实现
2022/04/28 Java/Android
如何利用python实现列表嵌套字典取值
2022/06/10 Python