使用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 】
相关推荐:
EditPlus中的正则表达式实战(6)
利用 Google AI 进行 YouTube 视频 SEO 描述优化
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
香港服务器网站推广:SEO优化与外贸独立站搭建策略
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
Laravel distinct去重查询_Laravel Eloquent去重方法
如何将凡科建站内容保存为本地文件?
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
Android中AutoCompleteTextView自动提示
轻松掌握MySQL函数中的last_insert_id()
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
黑客如何利用漏洞与弱口令入侵网站服务器?
如何用PHP工具快速搭建高效网站?
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
简单实现jsp分页
如何基于PHP生成高效IDC网络公司建站源码?
详解Android图表 MPAndroidChart折线图
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
如何在腾讯云服务器上快速搭建个人网站?
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
js实现获取鼠标当前的位置
EditPlus中的正则表达式 实战(4)
Python并发异常传播_错误处理解析【教程】
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
JS碰撞运动实现方法详解
如何在局域网内绑定自建网站域名?
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
油猴 教程,油猴搜脚本为什么会网页无法显示?
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
JavaScript数据类型有哪些_如何准确判断一个变量的类型
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
如何利用DOS批处理实现定时关机操作详解
如何有效防御Web建站篡改攻击?
想要更高端的建设网站,这些原则一定要坚持!
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
常州企业网站制作公司,全国继续教育网怎么登录?
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
Android使用GridView实现日历的简单功能
Python自动化办公教程_ExcelWordPDF批量处理案例
用v-html解决Vue.js渲染中html标签不被解析的问题
如何用5美元大硬盘VPS安全高效搭建个人网站?

