一、关于上手。

1. 关于ant design Pro的介绍,自己看官网,大致上可以理解为ant design(组件库) ant design Pro (完整的项目) dva(路由 数据流管理)的组合拳。总之这个Pro是一个已经帮你打通了从搭建到测试打包发布的一整套完整的项目,你只需要站在巨人的肩膀上开发就好了。

2. 按照官网安装好项目之后,就能看到几个页面。进行开发之前,你需要一定的react语法、Js(ES6)、dva的基础。啥?全家桶都不会?没关系,写页面又不需要你精通全家桶,看完以下链接就开始写页面吧,遇到不会的再去查,这样学比较快。请按照以下顺序食用

  • dva知识地图
  • js快速预览
  • react快速预览
  • react小书
  • dva文档
  • react中文文档
  • ES6
  • MDN ??? MDN有什么好看的?如果你js不太熟,MDN有很全的API可以查阅

二、使用ant design Pro

以一个ant design Table组件展示数据为例。

这样一个页面,可以看到:左边是导航栏menu组件,右边是主体BasicLayout组件。至于什么是layout,同样,在ant design Pro官网找得到。当你刚安装好antdp的时候已经有几个页面可以参考了。此处:在页面中,有几个按钮,按钮下方是ant design 的Table组件。

一、新建一个页面。

1.在路由中新建一条页面的配置。先不要管报错,因为路由对应的component和models你还没有,继续往下看。

2.新增一条之后,需要去对应的路径新建页面。一般都放在routes文件夹中

例如我新建了一个角色管理的页面,使用connect进行关联models。

3.然后再去models文件夹中新建一个model层文件,注意namespace要对应connect的component

二、数据交互。

这个表格页面使用antd 的table 组件,自己去官网拷贝代码。这里不再赘述。主要提一下,数据是怎样交互的。

Table组件里面的行数据就是是columns,它有自己的数据格式,你需要把数据格式转换成他规定的那种。在刚装好的项目中有表格的例子你可以参考一下,只不过案例是写死的静态数据。试试看:你把columns里面的数据删除掉,然后从外部获取到数据替换掉。

1.使用生命周期函数componentDidMount在组件挂载时,去请求表格的数据。这里发起一个dispatch 触发action,type的值就是models层中的。

2.在models中会使用antd封装好的方法去请求api.js中定义好的接口地址,然后等待返回就可以处理数据。

此处response拿到服务端返回的结果。你可以在此处对数据进行处理。比如后端返回的并非是你需要的数据格式,或者你可以进行更高层次的封装。

3.再调用reducers中的save方法将数据存储。通过在UIcomponent中已经进行关联,此时this.props能够取到你传送过去的数据。然后放入Table组件即可。

此处可能讲得不是很详细,比如上述代码各种方法是做什么用的,如果你有仔细看过文章开头列举的文档,尤其是dva文档,心中应该略知一二。此处只介绍了一个很粗略的开发流程,后续我会详细讲解。

三、个人开发思想及心得

1.在使用这套框架开发几个页面之后会明显感觉到,框架有点像MVC分层,十分规范!

M层models负责控制数据

V层UIComponent ,and design以及为你准备了丰富的组件库。

C层control,我个人理解为是api层的管理,将所有的需要请求后台数据的接口统一起来,很直观也方便调用和修改。

2.ant design Pro几乎已经为你做好了一切,你只需要替换数据、接口,开箱即用。在你切完数个页面之后会发现一个问题:如何进行更高层次的封装呢?不能每次都要复制粘贴很多重复的组件代码呢?

我个人是这样做的:比如说上面举例的表格页面。

首先,我会封装一个函数,函数接收各种字段。比如后端返回一系列的input各种类型的字段给你,你在函数中对字段进行匹配,每个字段对应到ant design的组件,将数据与组件关联,然后return这个组件。最后将所有的组件push到一个数组中,然后放入render函数,即可渲染出整个页面。

这个函数有点类似于React的HOC高阶组件(传组件和props进去,rerurn新的组件出来)概念,区别是我这里传入的是每个组件所需的数据而非组件,而return出的是一个组件。

3.多利用无状态组件、函数组件。表格上最后一行,编辑/删除按钮。我是在models层进行处理的,因为columns(Table组件的数据对象)在UIcomponents层已经进行渲染了,个人认为UI组件应该尽量简化,它只负责渲染数据。我在models层中将columns中的数据进行遍历,在本地构建一个对象(编辑按钮组件、删除按钮组件)与服务端返回的对象进行合并。同时,两个按钮的组件应该本身具备自有的功能,比如在任何一个表格中调用该组件即可使用其功能。合并后将新的colums对象丢给表格组件,这样进行了一个小小的抽象。

在表格上方的按钮,同样是通过函数来输出的按钮组件。按钮具有各自的属性、功能,通过入参来传递给函数,然后通过props设置给组件,来达到复用的目的。

最后,页面上有哪些组件、哪些按钮该如何规定呢?你需要和后端协商好字段、属性,比如一个表单页面有很多种input类型,input会有type、rules(验证规则)....后端返回给你一段组件所需的属性之后,你根据这些数据即可渲染出整个页面的组件。

以上是本人萌新使用ant design Pro的小小经验,可能创建页面的案例讲的不太清晰、抽象封装的思想不知道各位能否明白我所说的。

希望各位大佬们多多指教。如何进行更高层次的封装呢?每个页面需要对应路由、models、api接口地址、能否再进行封装达到动态的目的呢?这样连修改接口的重复工作也省了。

感谢阅读。

使用ant design Pro开发项目的小结相关推荐

  1. Ant Design Pro开发后台管理系统(新增页面)

    通过实际demo演示一个管理后台的开发过程 知识点: 1.新增router,新增models 新增菜单配置 1.如上图所示,打开/src/common/menu.js可以看到菜单列表 其中 menuD ...

  2. Ant Design Pro -- 02项目结构@20210331

    一.项目的目录结构 ├── config # umi 配置,包含路由,构建等配置 ├── docker # 部署 ├── functions # ├── mock # 本地模拟数据 ├── publi ...

  3. Ant Design Pro 开发上手

    目录 地址 安装 目录结构 本地开发 打部署包 路由控制 地址 首页:https://pro.ant.design/index-cn 源码:https://github.com/ant-design/ ...

  4. ant design pro模板_Ant Design Pro 学习笔记

    学习笔记 摘要介绍 Ant Design Pro 是一个基于Ant Design搭建起来的模板项目.它提供了两个主要布局:BasicLayout.UserLayout,在布局基础上制作了20多个基础页 ...

  5. ant design pro vue左侧菜单自定义图标

    做ant design pro vue项目的时候突然想修改左侧菜单的图标,在修改途中发现源码中提供的方法方法居然不生效(如下所示) 在src/assets/icons文件夹中下载svg图标 在src/ ...

  6. ant design pro(一)安装、目录结构、项目加载启动【原始、以及idea开发】

    一.概述 1.1.脚手架概念 编程领域中的"脚手架(Scaffolding)"指的是能够快速搭建项目"骨架"的一类工具.例如大多数的React项目都有src,p ...

  7. ant design pro 加载慢_ant design pro项目打包后页面加载缓慢

    用ant design pro框架做的项目,打包之后每一个页面加载的速度都特别慢,在.webpackrc里面配置了ignoreMomentLocale: true, disableDynamicImp ...

  8. Ant Design Pro项目启动报错 ChunkError mf-va_remoteEntry umi

    版本: Ant Design Pro 5,typescript 背景: 有个项目写完,后期等待沟通,于是去做了其他项目.回头再来看这个项目时,无法启动,删除node_modules也无法启动. 解决办 ...

  9. React + Ant Design Pro项目实现keep-alive页签

    背景 PC端管理系统,采用 ant design pro 方案,它是阿里的一个管理系统框架,技术栈是react. 相比vue,react一个先天不足是不支持 keep-alive,所以管理系统中的多页 ...

最新文章

  1. mysql负载均衡与同步_MySql数据库从同步负载均衡实时备份
  2. 从“小”培养AI安全意识:OpenAI开源具有安全约束的RL训练工具
  3. 加密解密、食谱、新冠序列,各种有趣的开源项目Github上都有
  4. C语言 其他标准函数
  5. 批处理命令set截取字符详解
  6. C语言课程设计---歌厅歌曲管理系统
  7. oracle语句求保有率,Oracle之保有量计算(当前记录等于前几条记录之和)
  8. html后台数据分类管理,细分数据.html
  9. cad两直线相交画圆弧_在CAD图纸中绘制中心线的操作技巧
  10. Android电话拦截研究
  11. 操作系统15----80386处理器基础
  12. 帆软日期格式转换_FineReport中日期时间函数使用总结
  13. GWAS和GS的结合:Single Step GWAS的应用
  14. Google Chrome 75.0.3770.100 插件丰富且自带翻译的浏览器
  15. 【javascript】收藏本站——添加到浏览器收藏夹
  16. Win10 蓝屏 SFC /SCANNOW发现损坏文件
  17. Android系统刷机教程之解bl锁
  18. 异常:Parameter 0 of constructor in com.ylz.supervise.childmodule.sys.log.strategy.StrategyContext req记
  19. 匹配移动,联通,电信手机号码正则表达式
  20. python 求解水仙花数,自幂数

热门文章

  1. Java基本语法(8)--比较运算符
  2. java new string作用_java中直接new String对象?
  3. Java中的注解是如何工作的?
  4. Zabbix-3.0.0 安装Graphtree
  5. Ioc Autofac心得
  6. unexpected AST node
  7. [转]在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录...
  8. 408计算机考研大纲 doc,2020计算机专业408基础综合考研大纲
  9. Eigen(2) 模块与头文件
  10. linux route命令的使用详解