美文网首页ReactJavaScript
使用react-router4.0实现重定向和404功能

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

作者: 忽如寄 | 来源:发表于2017-08-27 00:05 被阅读192次

原文地址:https://github.com/huruji/blog/issues/2

在开发中,重定向和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页面

相关文章

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

    原文地址:https://github.com/huruji/blog/issues/2 在开发中,重定向和404...

  • C进阶1:文件操作

    0. 文件输入输出 使用printf()和命令行重定向>实现文件输出;使用scanf()和命令行重定向<实现文件输...

  • PHP常用header函数

    1.实现重定向(状态码302) 2.刷新页面 3.页面不存在(404页面) 4.永久重定向(状态码301) 5.下...

  • Nginx配置rewrite重定向跳转

    1.功能:使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。 2.位置...

  • Nginx rewrite模块详解、expires缓存配置及gz

    一、rewrite使用 rewrite的主要功能是实现URI地址的重定向,将用户请求的URI基于regex所描述的...

  • 页面重定向

    本域名内实现目录重定向 利用php文件中的header 跳转到指定页面 使用.Htaccess文件实现301重定向...

  • response中实现的一些功能

    1.使用response下载图片 2.设置浏览器的缓存机制 3.通过response实现重定向功能: 4.通过re...

  • Charles基本使用

    本文介绍的功能: 安装和基本使用 支持https 断点的使用(修改请求和返回数据) 重定向和加载本地数据 安装和使...

  • Charles:移动开发“自测利器”

    本文介绍的功能: 安装和基本使用 支持https 断点的使用(修改请求和返回数据) 重定向和加载本地数据 安装和使...

  • nginx--rewrite

    URL重写(rewrite)介绍 rewrite的组要功能是实现RUL地址的重定向。Nginx的rewrite功能...

网友评论

    本文标题:使用react-router4.0实现重定向和404功能

    本文链接:https://www.haomeiwen.com/subject/vtnllxtx.html