使用ant design Pro开发项目的小结

一、关于上手。

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接口地址、能否再进行封装达到动态的目的呢?这样连修改接口的重复工作也省了。

感谢阅读。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Activiti中的高级脚本:自定义配置注入

脚本任务可能是Activiti代码库中“最古老的”类之一,但我认为它仍然未被许多人使用。 (可以理解的?)缺点当然是性能(解释还是编译),并且从IDE角度来看支持较少。 但是,好处&#xf…

帆软决策报表嵌入html,在决策报表中使用网页框控件

假设决策报表里有一个网页框控件,控件名为rHIframe0;同时有三个按钮控件,分别给按钮控件添加下面的点击事件:3.1 setValue(String)设置并刷新网页框控件的地址(保留原参数)1)模板路径var Widget this.options.form.getWidgetByNa…

【前端轶事】Chrome 小恐龙背后的故事

本文转自 FEPulse 公众号(微信搜索 FEPulse,精选国内外最新前端资讯,为你把握前端脉搏)。 如果你是 Chrome 用户,一定对那萌萌哒的小恐龙不陌生,每当互联网连接断开时,你便能看到那只小恐龙&am…

《React源码解析》系列完结!

前言 距离第一篇《React源码解析(一)》已经过去将近4个月的时间,由于是我第一次进行源码解析相关的写作,思路和文笔还不够成熟。一百多天以来,我基于读者反馈反思这几篇文章中的不足,同时也在不断学习借鉴其他优秀作者的写作方法…

html5 css 字体加粗,HTML和CSS实现字体加粗的三种方法

大家在浏览网站时有没有注意到,页面中有些文字或字体加粗了,正在学习HTML和CSS的小伙伴,你知道HTML如何给文字加粗吗?CSS怎么设置字体加粗呢?这篇文章给大家总结了给字体和文字加粗的三种方法,包括HTML中的…

虾扯蛋之函数防抖和节流

背景 今天在coding的时候,做了一个搜索框,也正是这个搜索框,让我和后台小伙伴直接由铁磁变为塑料兄弟。那到底发生啥了呢?其实很简单,其实很无奈,就是我用王者的手速把他的接口访问崩了! 我们在…

四川省内二本计算机公立好的大学排名,四川有哪些二本院校是公立的?附四川省公立二本大学排名及分数线...

选择科目测一测我能上哪些大学选择科目领取你的专属报告>选择省份关闭请选择科目确定v>四川省内的公办大学一直以来都是历年高考生及家长关注的重点,本篇文章我将针对“四川省有多少所二本公立大学?有哪四川省内的公办大学一直以来都是历年高考生及…

NetBeans 7.4 Beta提示警告无效的异常处理

有许多例子说明Java异常处理可能比首次出现时要困难得多,Josh Bloch专门将一整章的《 Effective Java》 (两个版本)专门用于异常处理。 Java中的检查异常模型 仍然 “ 有争议” 。 我很高兴看到我最近下载的NetBeans 7.4 beta有一些提示&…

mysql5.7.17解压版安装_Windows中 MySQL5.7.17解压版安装步骤

1、先去MySQL官网下载。当前最新版是5.7.19,可能安装方法不同了,本人测试没有安装成功,若有安装成功的朋友,希望分享一下安装步骤。2、将下载的压缩包解压出来,然后在“MySQL解压目录”中新建“data”文件夹。如下图&a…

关于Java和Scala同步的五件事你不知道

实际上,所有服务器应用程序都需要在多个线程之间进行某种同步。 大多数同步工作是在框架级别为我们完成的,例如通过我们的Web服务器,数据库客户端或消息传递框架。 Java和Scala提供了许多组件来编写可靠的多线程应用程序。 这些包括对象池&am…

精读《你不知道的javascript》中卷

前言 《你不知道的 javascript》是一个前端学习必读的系列,让不求甚解的JavaScript开发者迎难而上,深入语言内部,弄清楚JavaScript每一个零部件的用途。本书《你不知道的javascript》中卷介绍了该系列的两个主题:“类型和语法”以…

撸个微信小程序的省市区选择器

起因 微信小程序虽然已经有现成的封装好的省市区选择器给开发者使用,然鹅不幸的是,微信地址库的数据和公司用的地址库数据很难一一对上,那就只能撸起袖子自己写个组件了。 最终效果 思维导图 主要代码 组件 region-picker.js /* region-pic…

python之路_day6

本节内容&#xff1a;面向对象编程介绍为什么要用面向对象进行开发&#xff1f;面向对象的特性&#xff1a;封装、继承、多态类、方法、引子 你现在是一家游戏公司的开发人员&#xff0c;现在需要你开发一款叫做<人狗大战>的游戏&#xff0c;你就思考呀&#xff0c;人狗作…

MUI调用原生自定义方法实现计算缓存与清空缓存

由于项目需要最近在做webapp开发用的是MUI框架&#xff0c;自己本来是做原生开发的&#xff0c;在开发的时候有一个需求是实现计算缓存和清除缓存的功能&#xff0c;原生java方法实现轻轻松松&#xff0c;网上代码一大把&#xff0c;不过是webapp倒是不好搞&#xff0c;MUI自己…

Java中的多重继承与组合vs继承

有时我写了几篇有关Java 继承 &#xff0c; 接口和组成的文章。 在这篇文章中&#xff0c;我们将研究多重继承&#xff0c;然后学习组成优于继承的好处。 Java中的多重继承 多重继承是创建具有多个超类的单个类的能力。 与其他一些流行的面向对象的编程语言&#xff08;例如C …

开源|蚂蚁金服开源AntV F2:一个专注于移动,开箱即用的可视

小蚂蚁说&#xff1a;AntV 是蚂蚁金服全新一代数据可视化解决方案&#xff0c;主要子产品包括 G2、G6、F2。此前我们已经相继发布过AntV的相关开源消息与版本迭代&#xff0c;包括《蚂蚁金服开源&#xff1a;数据驱动的高交互可视化图形语法G2》&#xff0c;《开源 | 蚂蚁金服开…

Puppeteer入门初探

本文来自网易云社区作者&#xff1a;唐钊最近在看 node 爬虫相关的一些东西&#xff0c;我记得还是很久以前常用的 node 爬虫工具还是 superagengtcherrio,他们的思路是通过发起 http 请求然后截取 respone 的内容&#xff0c;但是随着前端mvvm等框架的盛行&#xff0c;现在更多…

访问量大如何增加服务器,服务器流量过大原因及解决方法

造成网站服务器流量过大的原因&#xff1a;1.网站规模较大(比如门户网站、网络商城等)&#xff0c;即网站本身访问量需求大&#xff0c;查看网站的Page View值、Hits值、日流量都很高。2.网站页面设计不合理&#xff0c;页面中包含大图片或音频、视频文件等文件&#xff0c;导致…

关于VUE项目地图开发中大量点标记绘制一些总结

问题说明 在地图开发中&#xff0c;当地图中绘制大量的标记点后&#xff0c;无论是拖动或者缩放&#xff0c;都会感觉到明显的卡顿现象。&#xff08;一般超过800个点后就比较明显了&#xff09;.在平时的工作业务中&#xff0c;由于公司的实时监控页面需要展现5000-20000车辆…

如何使用Java 5 Executor框架创建线程池

Java 5以Executor框架的形式在Java中引入了线程池&#xff0c;它允许Java程序员将任务提交与任务执行分离。 如果要使用Java进行服务器端编程&#xff0c;则线程池是维护系统可伸缩性&#xff0c;鲁棒性和稳定性的重要概念。 对于那些不熟悉Java中的线程池或这里的线程池的概念…