登录注册页面都分为上下两个部分,其中上部是logo,下部分是输入框,所以抽离出来三个组件

logo

import React from 'react'
import logoImg from './job.png'
import './logo.css'

class Logo extends React.Component{
render(){
return (
<div className="logo-container">
<img className="logo-img" src={logoImg} alt=""/>
</div>
)
}
}

export default Logo

login

import React from 'react'
import Logo from '../../component/logo/logo.js'
import {List,InputItem,WingBlank,WhiteSpace,Button} from 'antd-mobile'

class Login extends React.Component{
constructor(props){
super(props);
//绑定this时间,如果不绑定,无法传递this
this.register = this.register.bind(this);
}
register(){
console.log(this.props);
//跳转到注册页面
this.props.history.push('/register')
}
render(){
return (
<div>
<Logo></Logo>
<h2>我是登录页</h2>
<WingBlank>
<List>
<InputItem>用户名</InputItem>
<InputItem type="password">密码</InputItem>
</List>
<WhiteSpace/>
<Button type="primary">登录</Button>
<WhiteSpace/>
<Button onClick={this.register} type="primary">注册</Button>
</WingBlank>
</div>
)
}
}

export default Login

register

import React from 'react'
import Logo from '../../component/logo/logo'
import {List,InputItem,WingBlank,WhiteSpace,Button,Radio} from 'antd-mobile'
import {connect} from 'react-redux'
import {register} from '../../redux/user.redux'
import '../../index.css'

@connect(
state => state.user,
{register}
)
class Register extends React.Component{
constructor(props){
super(props);
this.state = {
user:'',
pwd:'',
repeatpwd:'',
type:'genius',
}
this.handleRegister = this.handleRegister.bind(this)
}
//调用redux/user.redux中的register方法,判断是否可以注册
handleRegister(){
this.props.register(this.state)
// console.log(this.state);
}
//监控输入框的变化,及时更新state中的值
handleChange(key,val){
this.setState({
[key]:val
})
}
render(){
const RadioItem = Radio.RadioItem
return (
<div>
<Logo></Logo>
<WingBlank>
<List>
{this.props.msg?<p className="error-msg">{this.props.msg}</p>:null}
<InputItem onChange={v=>this.handleChange('user',v)}>用户名</InputItem>
<InputItem onChange={v=>this.handleChange('pwd',v)} type="password">密码</InputItem>
<InputItem onChange={v=>this.handleChange('repeatpwd',v)} type="password">确认密码</InputItem>
<RadioItem onChange={()=>this.handleChange('type','genius')} checked={this.state.type=='genius'}>
牛人
</RadioItem>
<RadioItem onChange={()=>this.handleChange('type','boss')} checked={this.state.type=='boss'}>
boss
</RadioItem>
</List>
<WhiteSpace/>
<Button type="primary" onClick={this.handleRegister}>注册</Button>
<WhiteSpace/>
</WingBlank>
</div>
)
}
}

export default Register

authroute 是用来判断输入的链接地址是否符合要求以及用户登录情况,进而判断是否跳转

import React from 'react'
import axios from 'axios'
import {withRouter} from 'react-router-dom'

//进行判断是否登陆并进行路由跳转
@withRouter
class AuthRoute extends React.Component{
componentDidMount(){
const publicList = ['/login','/register']
const pathname = this.props.location.pathname
//判断输入的链接是否符合要求
if(publicList.indexOf(pathname)>-1){
return null
}
//获取用户信息
axios.get('/user/info').then(res=>{
//判断是否登录,如果没有登录,则跳转到登录界面
if(res.status==200){
if(res.data.code==0){

}else{
this.props.history.push('/login')
}
console.log(res.data);
}
})
//用户状态:是否登陆
//现在的URL地址 login是不需要跳转的
//用户的身份是boss还是牛人
//用户是否完善信息(头像,简介)
}
render(){
return null
}
}
export default AuthRoute

react实现登录注册的更多相关文章

  1. React Native登录注册页面实现空白处收起键盘

    其实很简单,直接使用ScrollView作为父视图即可.有木有很神奇啊,以前都还不知道呢.....

  2. 【招聘App】—— React/Nodejs/MongoDB全栈项目:登录注册

    前言:最近在学习Redux+react+Router+Nodejs全栈开发高级课程,这里对实践过程作个记录,方便自己和大家翻阅.最终成果github地址:https://github.com/66We ...

  3. web全栈开发之网站开发二(弹出式登录注册框前端实现-类腾讯)

    这次给大家分享的是目前很多网站中流行的弹出式登录框,如下面的腾讯网登录界面,采用弹出式登录的好处是大大提升了网站的用户体验和交互性,用户不用重新跳转到指定的页面就能登录,非常方便 先来个演示地址 要实 ...

  4. android安卓Sqlite数据库实现用户登录注册

    看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...

  5. JQuery+Ajax+Struts2+Hibernate 实现完整的登录注册

    写在最前: 下午有招聘会,不想去,总觉得没有准备好,而且都是一些不对口的公司,可是又静不下心来,就来写个博客. 最近在仿造一个书城的网站:http://www.yousuu.com ,UI直接拿来用, ...

  6. HTML登录注册界面怎么制作?

    在没有学习CSS样式的前提下,是如何做一个简单的注册界面的. 一.表单标签(form) 首先我们先写一个<form></form>的标签,form标签属于表单标签,通常我们的登 ...

  7. php+ajax 登录注册页面

    主要是登录注册功能,前端后台验证没有什么,这个大家可以自己加上去,比如过滤啊,正则啊等 还是先放图吧 这是登录及注册界面  点击注册切换到注册界面,点击登录切换到登录界面 <!DOCTYPE h ...

  8. 7. Swift 基于Xmpp和openfire实现一个简单的登录注册

    1. 基本步骤:首先导入Xmpp框架,配置环境 ->由于我们使用的是OC的Xmpp框架,再进行Swift开发时需要进行桥接. 具体方法就是创建一个基于c的.h的头文件,然后将我们需要编译OC的语 ...

  9. Nodejs学习总结 -Express 登录注册示例(二)

    项目创建后,我们来做个登录注册实例,详细操作步骤如下. 1.新建项目demo ,具体操作步骤参考上一章内容 https://www.cnblogs.com/Anlycp/ 2.添加mysql和sess ...

随机推荐

  1. jmeter 测试MD5加密登录接口

    1.点击options-funciton helper dialog,打开函数助手 在string to  calculate MD5 hash 中填写密码,复制function sysntax中的值 ...

  2. python接口测试-将运行结果写入Excel表格

    公司工作是促进学习的第一生产力!! 一个get请求的接口,我想清楚的在Excel中看到所有的数据! 带着学过H5,php觉得所有代码都很简单的自信,在公司开发的[鼓励]下开始了一上午的斗争 一个小时. ...

  3. flume实现kafka到文件测试用例

    kafka 到 file at2.sources =st2 at2.channels = ct2 at2.sinks = kt2 # For each one of the sources, the ...

  4. spring注解注入:<context:component-scan>详解

    spring从2.5版本开始支持注解注入,注解注入可以省去很多的xml配置工作.由于注解是写入java代码中的,所以注解注入会失去一定的灵活性,我们要根据需要来选择是否启用注解注入. 我们首先看一个注 ...

  5. 请求转发和URL重定向的原理和区别

    一.请求转发和重定向是在java后台servlet中,由一个servlet跳转到另一个servlet/jsp要使用的技术 使用方法 请求转发  req.getResquestDispatcher(se ...

  6. Buy or Build(UVa1151)

    如果枚举每个套餐,并每次都求最小生成树,总时间复杂度会很高,因而需要先求一次原图的最小生成树,则枚举套餐之后需要考虑的边大大减少了. 具体见代码: #include<cstdio> #in ...

  7. 关于笔记本安装parrot和kali的一些问题(花屏,息屏,屏幕不能休眠)

    新入手了个笔记本,还是想跟原来一样装回熟悉的kali环境中,结果我的天啊,这一路坑,简直了. 写下我遇到的问题吧,算是给大家提供一些解决方法. 1.安装kali和parrot出现无法引导的grub的情 ...

  8. 利用python破解sqlserver账号密码

    一.编写密码测试函数 在用python连接mssql数据库的时候,通常会使用pymssql模板中的connect函数,格式如下: connect(server,user,password,databa ...

  9. [原] inline operator delete & DLL boundary

    很久以前写在百度空间的这篇文章: [百度空间] [原] 全局operator delete重载到DLL 首先,纠正一个词“重载”,operator new/delete是替换(replacement) ...

  10. maven无法下载oracle驱动包

    由于版权问题,在中央仓库是没有oracle的jdbc驱动的,可以手动下载到本地或者在oracle安装目录的jdbc目录中找到对应的jar,然后通过以下命令安装到本地仓库 mvn install:ins ...