使用react-router4.0实现重定向和404功能的方法


Posted in Javascript onAugust 28, 2017

在开发中,重定向和404这种需求非常常见,使用React-router4.0可以使用Redirect进行重定向

最常用的就是用户登录之后自动跳转主页。

import React, { Component } from 'react';
import axios from 'axios';
import { Redirect } from 'react-router-dom';

class Login extends Component{
 constructor(){
  super();
  this.state = {value: '', logined: false};
  this.handleChange = this.handleChange.bind(this);
  this.toLogin = this.toLogin.bind(this);
 }
 handleChange(event) {
  this.setState({value: event.target.value})
 }

 toLogin(accesstoken) {
  axios.post('yoururl',{accesstoken})
   .then((res) => {
    this.setState({logined: true});
   })
 }

 render() {
  if(this.props.logined) {
   return (
    <Redirect to="/user"/>
   )
  }
  return (
   <div>
     <input type="text" value={this.state.value} onChange={this.handleChange} />
     <a onClick={() => { this.toLogin(this.state.value) }}>登录</a>
   </div>
  )
 }
}

export default Login;

以上这个示例仅仅是将登录的状态作为组件的state使用和维护的,在实际开发中,是否登录的状态应该是全局使用的,因此这时候可能你会需要考虑使用redux等这些数据状态管理库,方便我们做数据的管理。这里需要注意的使用传统的登录方式使用cookie存储无序且复杂的sessionID之类的来储存用户的信息,使用token的话,返回的可能是用户信息,此时可以考虑使用sessionStorage、localStorage来储存用户信息(包括头像、用户名等),此时书写reducer时需要指定初始状态从存储中获取,如:

const LOGIN_SUCCESS = 'LOGIN_SUCCESS';
const LOGIN_FAILED = 'LOGIN_FAILED';
const LOGINOUT = 'LOGINOUT';

const Login = function(state, action) {
 if(!state) {
  console.log('state');
  if(sessionStorage.getItem('usermsg')) {
   return {
    logined: true,
    usermsg: JSON.parse(sessionStorage.getItem('usermsg'))
   }
  }
  return {
   logined: false,
   usermsg: {}
  }
 }
 switch(action.type) {
  case LOGIN_SUCCESS:
   return {logined: true,usermsg: action.usermsg};
  case LOGIN_FAILED:
   return {logined: false,usermsg:{}};
  case LOGINOUT:
   return {logined: false, usermsg: {}};
  default:
   return state
 }
};

export default Login;

指定404页面也非常简单,只需要在路由系统最后使用Route指定404页面的component即可

<Switch>
 <Route path="/" exact component={Home}/>
 <Route path="/user" component={User}/>
 <Route component={NoMatch}/>
</Switch>

当路由指定的所有路径没有匹配时,就会加载这个NoMatch组件,也就是404页面

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
仿迅雷焦点广告效果(JQuery版)
Nov 19 Javascript
jquery 双色表格实现代码
Dec 08 Javascript
ExtJS GridPanel 根据条件改变字体颜色
Mar 08 Javascript
Jquery上传插件 uploadify v3.1使用说明
Jun 18 Javascript
js渐变显示渐变消失示例代码
Aug 01 Javascript
jquery实现的下拉和收缩效果示例
Aug 21 Javascript
requireJS使用指南
Apr 27 Javascript
微信小程序 解析网页内容详解及实例
Feb 22 Javascript
微信小程序自定义音乐进度条的实例代码
Aug 28 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
Apr 02 Javascript
vue 返回上一页,页面样式错乱的解决
Nov 14 Javascript
ajax jquery实现页面某一个div的刷新效果
Mar 04 jQuery
vue.js路由跳转详解
Aug 28 #Javascript
jQuery Collapse1.1.0折叠插件简单使用
Aug 28 #jQuery
解决IE7中使用jQuery动态操作name问题
Aug 28 #jQuery
BootStrap入门学习第一篇
Aug 28 #Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
Aug 28 #Javascript
js制作简单的音乐播放器的示例代码
Aug 28 #Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
Aug 28 #Javascript
You might like
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
用htc组件制作windows选项卡
2007/01/13 Javascript
JavaScript Konami Code 实现代码
2009/07/29 Javascript
javascript奇异的arguments分析
2010/10/20 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
2015/10/30 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
全面了解JavaScript对象进阶
2016/07/19 Javascript
jQuery实现可移动选项的左右下拉列表示例
2016/12/26 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
2018/12/06 jQuery
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
[41:11]完美世界DOTA2联赛PWL S2 Inki vs Magma 第一场 11.22
2020/11/24 DOTA
Python中的自省(反射)详解
2015/06/02 Python
python调用API实现智能回复机器人
2018/04/10 Python
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
Python读取配置文件(config.ini)以及写入配置文件
2020/04/08 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
Veronica Beard官网:在酷、经典和别致之间找到了平衡
2018/01/11 全球购物
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
诚信考试承诺书
2014/03/27 职场文书
产品销售计划书
2014/05/04 职场文书
音乐学专业求职信
2014/07/22 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
党员个人对照检查材料
2014/10/01 职场文书
年终工作总结范文2014
2014/11/27 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
创业开店,这样方式更合理
2019/08/26 职场文书
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python
《LOL》“克隆大作战”久违归来 幻灵战队皮肤上线
2022/04/03 其他游戏