登录注册页面都分为上下两个部分,其中上部是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. python基础(六)

    一.内置函数 # input()# type()# len()# print()# enumerate()# list()# dict()# tuple()# set()# str()# int()# ...

  2. DataTables中自增序号的实现

    最近工作中,一直在写前端的东西,一直以来前端都接触的少,所以侧重点也没放在这边,导致现在工作进展比较慢,果然偷懒是要不得的啊.... 今天刚写了一个在DataTables中增加一列自增序号,刚开始以为 ...

  3. maven使用utf8等

    pom.xml: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncodi ...

  4. adv生成控制器手腕位置倾斜原因以及解决方案

    系统默认问题导致手腕倾斜详情描述: 手腕部分默认生成轴向是冲向模板下一层级第一个物体  简单说就是 FK轴向冲向模板中指方向 如图 默认模板没问题是因为  默认模板没有改动情况下系统中指与手腕在一条直 ...

  5. windows 下的 Apache SSL证书配置

    一.获取证书 1.从腾讯云获取 (1)登录腾讯云后,在“产品”中搜索[ssl]然后会得到 "SSL证书“,进入后点“立即选购” 这样就完成了证书的申请,等待一个工作日的审核. 审核通过后,进 ...

  6. 可持久化trie学习笔记

    其实很早之前就想学习可持久化trie,不过由于换队友等情况,还是优先去学数论和计算几何,今天突然心血来潮学了一发可持久化trie,感觉还是蛮简单的,不过由于自己很长时间没写过可持久化了,都快忘了是个什 ...

  7. Java Native

    native 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个java的方法:该方法的实现由 ...

  8. maven无法下载oracle驱动包

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

  9. swiper内容滚动

    <html> <head> <meta charset="UTF-8"> <meta name="viewport" ...

  10. mvc项目远程发布到windows server服务器

    1.安装IIS的时候需要将这两个选项勾选起来 2.确保 管理服务委派 这个选项存在 3.添加委派规则 4.配置IIS管理用户,后续需要用这个用户进行发布连接 5.配置站点的IIS权限 选择刚才在前面设 ...