一个简单又好入门的 react 后台管理系统(2)

v2-7010664e8dcc8574d7a9c900d0c632a3_b.gif

后台管理系统的登录与注册

一、登录页的模板样式搭建

1、使用 antd 模板,找到栅格系统,按照文档对你的登录页面做出你喜欢的修改,这里需要注意的是,在做提交按钮时,记得要阻止浏览器的默认事件,不然他会刷新浏览器,还有就是函数组件中没有 this 所以如果你需要做事件绑定的话,最好采用类组件
2. 接下来,进行登录校验,没什么好说的了,就是看文档,由于我用的是 antd 封装好的表单,下面我说几个值得注意一下的东西

Form.create()(Login)  //用来创建一个实例对象,不创建里面的组件没办法传props,他里面有一个 this.props.form ,这个东西里面有很多 antd 已经封装好的方法

2. 创建了实例对象后,我们可以在监听表单提交的事件函数里使用它自带的 validateFields 方法,可以打印出我们输入在输入框的内容,当然,默认输出的是一个空对象,要想得到我们在表单输入的内容,还得要进行双向数据绑定

3. getFieldDecorator( id, options ) ,用于实现数据的双向绑定!!!也是 this.props.form 里面自带的函数,第一个参数必填输入控件唯一标志。支持嵌套式的写法,一般写个名字就好,后面的是各种方法、规则,自己看文档了解即可,做完这个,我们就可以算是基本实现了表单的校验了

二、 后端接口的制作

1. 之前我们创建了两个仓库,一个是前端的,一个是后端接口的,那么我们现在来做一下后端接口。首先,在本地创建一个 student-api 的文件夹,在里面进行npm 与 git 的初始化
1. npm init -y
2. git init
2. 安装所需要用到的插件
npm install --save json-server
npm install --save express
npm install --save axios
npm install --save bcryptjs //密码加密
3. 在文件根目录下创建一个 .gitignore,在里面写上需要忽略的文件,例:
image.png
4. 在文件根目录下创建一个 server.js 和 db.json 文件, 在这个 db.json 文件下先创建一个 users 数组
image.png
5. 在 server.js 文件下写下如下代码
image.png
6. 做完以上步骤后记得在 package.json 文件下修改如下代码,做完,就可以 npm run dev 启动数据了,也可以 localhost://9090/users 访问我们的假数据(IP地址访问也可以)
image.png
7. 以上,做一个简单的胆码提交,与前端页面一致,要在 develop 分支进行操作
1. git add .
2. git commit -m 'init'
3. git remote add origin 你的仓库地址
4. git push -u origin master
5. git checkout -b develop
6. git push -u origin develop
7. 在远程仓库里修改 develop 为默认分支,合并时在改回来

三、注册接口的实现

1. 首先引入 axios,要用 axios 先引入,然后要记得配置 axios 的默认路由,不然它找不到假数据的路由
const Axios = require ( 'axios' )

Axios.defaults.baseURL = 'http://localhost:9090'
2. 自己实现一个注册的接口,获取前端输入框传过来的数据,并将它传入假数据中的 users 中,代码示例如下
server.post('/login-up', async ( req, res ) => { 
// 1、获取前端传过来的数据
// 2、直接使用 Axios 来调用 json-server 的 users 这个接口来存进去
// 3、存进去之前要先查询假数据中是否有该用户名,有的话就不给注册,没有的话则注册成功

const response = await Axios.get( '/users', { params: { username: req.body.username } } )

if ( response.data.length > 0 ) {
res.send ( { 
code: -1,
msg: '用户名已被注册过了'
} )
return
}

const { data } = await Axios.post( '/users', req.body )
res.send( { 
code: 0,
msg: '注册成功',
data
} )
} )
3. 密码加密,下载 bcryptjs 用时记得引入
const bcryptjs = require ( 'bryptjs' )
将这里的 req.body
image.png

改成如下对象即可!!!!

{ 
...req.body,
password: await bcryptjs.hash ( req.body.password, 10 )
}

四、登录接口的实现(后端接口已做完)

image.png
写完后,出现下面这个页面就是验证通过了,即可进行一次远程提交
image.png

五、 回到前端页面,实现前后端交互

1. 在 src 文件夹下面创建一个 api 文件,里面创建一个 UserApi.js 文件,代表用户相关的 API
2. 既有接口,肯定就有 ajax 请求,这里我选用 axios 请求数据,所以要在项目里安装 axios ,然后再 UserApi.js 里面引用 axios,这里有一个和后端接口一样的问题,就是要配置 axios 的默认路由,不然容易出问题,这里的 axios 配置,要配置在最外层,也就是 src 下的 index.js 里面
image.png

注意!!!这里有个小补充,如果你想像 vue 一样给 src 配置一个别名的话,在 config-overrides.js 文件下加入我画红线的内容即可,配不配置看个人选择

image.png
3. UserApi.js 文件里面的内容是这样的,然后我们将 UserApi 引进注册页面,写下如下代码
image.png

image.png
此时,浏览器会报错,报的是跨域的错,这时我们应该在后端的 server.js 文件中配置如下代码,代码里面的请求头浏览器有给出,这时只需复制粘贴即可
image.png
image.png
注意!!! 虽然上面存在跨域的问题,但是我们的数据已经存进了我们的假数据里面了,做完上面这样我们已经初步完成了前后端的注册校验了,接下来只需要在优化一下全局弹框即可,因为用 alert 的弹框有点不高大上、、、这个自己看 antd 的文档即可
4. 引入弹框时,它可以接收3个参数,一个是 msg, 消失的时间, 消失后做的一个回调函数,代码如下,自己看文档理解
image.png
5. 完善注册页面,引入 button 按钮的 loading 特效,代码如下
image.png

image.png

image.png
6. 在 server.js 文件下加一个延时的功能,当然这样做只是为了方便自己看,项目上线时还是要把这个延时函数删除的
image.png
7. 做一个简单的远程提交
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容

  • 《宋朝原来是这样》:陈桥兵变,宋太祖黄袍加身,定三百年帝国基业。大宋帝国在进取与保守、图强与积弱的反复中踽踽而行。...
    simple梦阅读 250评论 0 5
  • 【杰琳机械 20171102《书语者》D7/7】学而思:《书语者》今天已到尾声了,好不舍呀,彭彭以超棒的学而思结尾...
    冬来安好阅读 95评论 0 0
  • 彼岸花,又被称之为蔓珠莎华。 彼岸花开,花开彼岸,花开无叶,叶生无花。 相念相惜却不得见,独自彼岸路。 男孩...
    那是垃圾语蔚呀阅读 257评论 0 1
  • 一岁十个月了,睡在奶奶的床上,以为旁边不是麻麻,闭着眼睛,缩在角落里,哭出声来。
    猫咪猫91阅读 197评论 0 0
  • 人们没有能力改良他们的生活情形,他们只能够创造他们的贴身环境 — 那就是衣服,我们各人住在各人的衣服里。by张爱玲...
    乔宇宙阅读 1,755评论 0 4