Antd Pro新增表格页面(二)

  • Post author:
  • Post category:其他




前言

承接上一篇博客

Ant Design Pro 新增一个表格页面(一)


继续对index.tsx进行修改



请求相关修改

复制过来的index.tsx文件中的请求都是rule的增删查改,将其修改为前文已经写好的接口请求。

import { rule, addRule, updateRule, removeRule } from '@/services/ant-design-pro/api';
import { members, addMember, updateMember, removeMember } from '@/services/ant-design-pro/api';

需要注意的是接口请求需要一些修改,例如修改用户接口:

/** 修改用户 PUT /index.php/api/member/update */
export async function updateMember(params: object, data: object, options?: { [key: string]: any }) {
  return request<API.MemberListItem>('/index.php/api/member/update', {
    method: 'PUT',
    params: {...params},
    data: {...data},
    ...(options || {}),
  });
}

这里我给修改用户的这个请求添加了参数params和data。params是查询参数,附加在url后,data则是post到服务器的数据。options暂时不清楚怎么使用。

例如修改某个用户的用户名以及备注:index.tsx中这样调用:

const handleUpdate = async (fields: FormValueType) => {
  const hide = message.loading('正在配置');
  try {
    await updateMember(
      { id: fields.id },
      {
        name: fields.name,
        remark: fields.remark,
      },
    );
    hide();
    message.success('配置成功');
    return true;
  } catch (error) {
    hide();
    message.error('配置失败请重试!');
    return false;
  }
};

跟踪handleUpdate的调用,可以发现它是在UpdateForm提交事件的回调中被调用,同时参数fields被填充为updateForm提交的数据。

添加用户及删除用户接口也是类似的修改,省略这个过程。



API数据规范修改

原文件中的 API.RuleListItem[] 修改为前文写好的 API.MemberListItem[]



列配置修改



一般列配置

找到列配置代码:

const columns: ProColumns<API.MemberListItem>[] = []

配置一个最简单的列,只需要设置好title和dataIndex即可,dataIndex指定从接口中获取哪项数据。

const columns: ProColumns<API.MemberListItem>[] = [
	{
	     title: '用户名',
	     dataIndex: 'username',
	   },
]

根据业务的需要,展现各个数据。



复杂列配置

举个简单的应用场景例子:

  • 后端返回的时间戳以秒为单位,而设置valueType为dateTime默认转换的是以毫秒为单位的时间戳,导致无法使用valueType自动转换。个人简单的处理方案:
{
      title: "时间"
      dataIndex: 'time',
      renderText: (text: number) => {
        return text * 1000;
      },
	valueType: "dateTime",	
}

值得一提的是:先执行renderText,将时间戳 * 1000,valueType会对这个返回值进行转换

更复杂的、自定义的列配置请参考官方文档API:

ProTable的Columns列配置



结语

至此,基本能搭建一个用于展示所有用户的列表页面,但是其实还有许多地方是值得深入研究的

  • useState的使用:React的最新特性hooks
  • Modal浮层/Drawer抽屉的展现与隐藏控制
  • 实现自定义一个操作去请求接口



版权声明:本文为weixin_42134325原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。