使用react-router4.0实现重定向和404功能的方法
发布时间 - 2026-01-11 02:59:24 点击率:次在开发中,重定向和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页面
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# reactrouter重定向
# react
# router
# 重定向
# 404
# 详解React中传入组件的props改变时更新组件的几种实现方法
# VSCode配置react开发环境的步骤
# react-redux中connect的装饰器用法@connect详解
# ReactNative 之FlatList使用及踩坑封装总结
# React Native实现简单的登录功能(推荐)
# ReactNative之键盘Keyboard的弹出与消失示例
# react-router browserHistory刷新页面404问题解决方法
# 详解React Native开源时间日期选择器组件(react-native-datetime)
# react中使用swiper的具体方法
# React useMemo和useCallback的使用场景
# 就会
# 你会
# 只需
# 要在
# 仅仅是
# 可以使用
# 跳转
# 用户登录
# 需要注意
# 最常用
# 大家多多
# 时需
# 应该是
# 这时候
# 加载
# 在实际
# state
# false
# logined
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
如何在腾讯云服务器快速搭建个人网站?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
动图在线制作网站有哪些,滑动动图图集怎么做?
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
如何在服务器上配置二级域名建站?
Laravel如何处理CORS跨域请求?(配置示例)
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
如何选择PHP开源工具快速搭建网站?
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
实现点击下箭头变上箭头来回切换的两种方法【推荐】
如何在 Pandas 中基于一列条件计算另一列的分组均值
bootstrap日历插件datetimepicker使用方法
详解CentOS6.5 安装 MySQL5.1.71的方法
JavaScript如何实现倒计时_时间函数如何精确控制
Laravel怎么使用artisan命令缓存配置和视图
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
如何在阿里云高效完成企业建站全流程?
图册素材网站设计制作软件,图册的导出方式有几种?
智能起名网站制作软件有哪些,制作logo的软件?
Java类加载基本过程详细介绍
php打包exe后无法访问网络共享_共享权限设置方法【教程】
再谈Python中的字符串与字符编码(推荐)
Linux系统运维自动化项目教程_Ansible批量管理实战
EditPlus中的正则表达式 实战(2)
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
Laravel如何创建自定义Artisan命令?(代码示例)
网站制作免费,什么网站能看正片电影?
大连网站制作公司哪家好一点,大连买房网站哪个好?
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
如何在云主机上快速搭建网站?
专业商城网站制作公司有哪些,pi商城官网是哪个?
如何在云服务器上快速搭建个人网站?
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
如何快速查询域名建站关键信息?
Laravel如何使用.env文件管理环境变量?(最佳实践)
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
Laravel如何与Pusher实现实时通信?(WebSocket示例)
香港网站服务器数量如何影响SEO优化效果?
如何用搬瓦工VPS快速搭建个人网站?
免费视频制作网站,更新又快又好的免费电影网站?
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
php 三元运算符实例详细介绍
高端企业智能建站程序:SEO优化与响应式模板定制开发

