使用react-router4.0实现重定向和404功能
原文地址: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使用和维护的,在实际开发中,是否登录的状态应该是全局使用的, 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页面 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |