React后台管理系统-登录页面
登录页面
- <div className="col-md-4 col-md-offset-4">
- <div className="panel panel-default login-panel">
- <div className="panel-heading">欢迎登录 - MMALL管理系统</div>
- <div className="panel-body">
- <div>
- <div className="form-group">
- <input type="text"
- name="username"
- className="form-control"
- placeholder="请输入用户名"
- onKeyUp={e => this.onInputKeyUp(e)}
- onChange={e => this.onInputChange(e)}/>
- </div>
- <div className="form-group">
- <input type="password"
- name="password"
- className="form-control"
- placeholder="请输入密码"
- onKeyUp={e => this.onInputKeyUp(e)}
- onChange={e => this.onInputChange(e)}/>
- </div>
- <button className="btn btn-lg btn-primary btn-block"
- onClick={e => {this.onSubmit(e)}}>登录</button>
- </div>
- </div>
- </div>
- </div>
当用户名和密码发生改变的时候,设置onChange事件,重新设置state里边username和password的值
- this.state = {
- username: '',
- password: '',
- redirect: _mm.getUrlParam('redirect') || '/'
- }
- // 当用户名发生改变
- onInputChange(e){
- let inputValue = e.target.value,
- inputName = e.target.name;
- this.setState({
- [inputName] : inputValue
- });
- }
给输入框设置onKeyUp事件,监听输入框按下enter键的时候,提交登录数据
- onInputKeyUp(e){
- if(e.keyCode === 13){
- this.onSubmit();
- }
- }
提交表单数据,提交之前先验证表单数据,
- // 检查登录接口的数据是不是合法
- checkLoginInfo(loginInfo){
- let username = $.trim(loginInfo.username),
- password = $.trim(loginInfo.password);
- // 判断用户名为空
- if(typeof username !== 'string' || username.length ===0){
- return {
- status: false,
- msg: '用户名不能为空!'
- }
- }
- // 判断密码为空
- if(typeof password !== 'string' || password.length ===0){
- return {
- status: false,
- msg: '密码不能为空!'
- }
- }
- return {
- status : true,
- msg : '验证通过'
- }
- }
- onSubmit(){
- let loginInfo = {
- username : this.state.username,
- password : this.state.password
- },
- //验证表单
- checkResult = _user.checkLoginInfo(loginInfo);
- // 验证通过
- if(checkResult.status){
- _user.login(loginInfo).then((res) => {
- _mm.setStorage('userInfo', res);
- //console.log(this.state.redirect);
- this.props.history.push(this.state.redirect);
- }, (errMsg) => {
- _mm.errorTips(errMsg);
- });
- }
- // 验证不通过
- else{
- _mm.errorTips(checkResult.msg);
- }
- }
登录之后跳转地址this.sate.redirect= _mm.getUrlParam('redirect') || '/' , this.props.history.push(this.state.redirect);
- // 跳转登录
- doLogin(){
- //window.location.pathname url路径部分,端口后边,问号前边
- //例如 redirect="/user/index"
- window.location.href = '/login?redirect=' + window.location.pathname;
- // window.location.href = '/login?redirect=' + encodeURIComponent(window.location.pathname);
- }
- // 获取URL参数
- getUrlParam(name){
- //http://localhost:8086/login?redirect=/product/index
- // param=123¶m1=456
- let queryString = window.location.search.split('?')[1] || '',
- reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"),
- result = queryString.match(reg);
- console.log(result);
- return result ? decodeURIComponent(result[2]) : null;
- }
React后台管理系统-登录页面的更多相关文章
- 我的第一个python web开发框架(14)——后台管理系统登录功能
接下来正式进入网站的功能开发.要完成后台管理系统登录功能,通过查看登录页面,我们可以了解到,我们需要编写验证码图片获取接口和登录处理接口,然后在登录页面的HTML上编写AJAX. 在进行接口开发之前, ...
- 《React后台管理系统实战 :一》:目录结构、引入antd、引入路由、写login页面、使用antd的form登录组件、form前台验证、高阶函数/组件
实战 上接,笔记:https://blog.csdn.net/u010132177/article/details/104150177 https://gitee.com/pasaulis/react ...
- 《React后台管理系统实战 :三》header组件:页面排版、天气请求接口及页面调用、时间格式化及使用定时器、退出函数
一.布局及排版 1.布局src/pages/admin/header/index.jsx import React,{Component} from 'react' import './header. ...
- 《React后台管理系统实战 :二》antd左导航:cmd批量创建子/目录、用antd进行页面布局、分离左导航为单独组件、子路由、动态写左导航、css样式相对陷阱
一.admin页面布局及路由创建 0)cmd批量创建目录及子目录 //创建各个目录,及charts和子目录bar md home category product role user charts\b ...
- 【共享单车】—— React后台管理系统开发手记:主页面架构设计
前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...
- react后台管理系统路由方案及react-router原理解析
最近做了一个后台管理系统主体框架是基于React进行开发的,因此系统的路由管理,选用了react-router(4.3.1)插件进行路由页面的管理配置. 实现原理剖析 1.hash的方式 ...
- AntDesign(React)学习-4 登录页面提交数据简单实现
github代码:https://github.com/zhaogaojian/jgdemo 全国肺炎,过节期间没地方去在家学习antd. 一.感觉antd pro项目太庞大了,可以学习下结构和代码风 ...
- 【共享单车】—— React后台管理系统开发手记:AntD Form基础组件
前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...
- React后台管理系统-用户列表页面
1.页面的结构 //遍历list, 返回数据 let listBody= this.state.list.map((user,index)=> { return ...
随机推荐
- 11gR2 ASM RAC + ASM RAC dataguard配置
1.环境说明 --primary端配置 Primary RAC Node1 Node2 Public IP 192.168.56.120 192.168.56.122 Private IP 10.0. ...
- JOS lab1 part2 分析
lab1的Exercise 2就是让我们熟悉gdb的si操作,并知道BIOS的几条指令在做什么就够了,所以我们也会尽可能的去分析每一行代码. 首先进入到6.8282/lab这个目录下,输入指令make ...
- 04.Spring Ioc 容器 - 刷新
基本概念 Spring Ioc 容器被创建之后,接下来就是它的初始化过程了.该过程包含了配置.刷新两个步骤 . 刷新由 Spring 容器自己实现,具体发生在 ConfigurableApplicat ...
- Telerik RadPropertyGrid 设置显隐 Combox选择
Telerik RadPropertyGrid 的排序按钮.搜索框和描述面板的显隐只要设置SortAndGroupButtons.SearchBox.DescriptionPanel的属性值改为Vis ...
- Nodejs mysql pool使用实例
前段时间在写一个版本发布工具,用到express+mysql实现,当站点运行很长一段空白时间后,node进程会自动down掉,提示mysql连接错误,谷歌后发现是mysql自身的特性导致,因此后来改为 ...
- 【JavaEE】WebService到底是什么?
一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分.但是不得不承认的是Web ...
- (三)Redis两种持久化方案
Redis的持久化策略:2种 RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘.RDB是Redis默认采用的持久化方 ...
- pat1064. Complete Binary Search Tree (30)
1064. Complete Binary Search Tree (30) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHE ...
- Python3基础(3)集合、文件操作、字符转编码、函数、全局/局部变量、递归、函数式编程、高阶函数
---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...
- 安卓usb数据接收
之前在论坛里面求助了关于监听数据接收的问题,因为第一次做这方面,可能我提的问题太简单了,大神都不愿意回答我,(之前的帖子)晚上FQ浏览网站发现问题的解决办法, 原文是:最近老板让弄安卓和一块板子通信, ...