React路由使用详解
安装路由
打开cmd
在项目文件夹安装:npm i react-router-dom@5.0 -S(指定5.0版本)
导入路由的相关组件
在app.js中添加路由,导入
import {HashRouter as Router, //HashRouter哈希路由 as起别名 router路由Route, //Route 存放路由的容器NavLink, //navlink 导航链接Redirect, // Redirect 重定向Switch, // Switch一次匹配一个页面
} from "react-router-dom";
创建两个路由页面
首页页面:
//创建首页
function Home(){return (<div><h1>首页内容</h1>
</div>);
}
export default Home;
分支路由页面:
function About(){return (<div><h1>关于页面内容</h1>
</div>);
}
export default About;
配置路由
在需要的页面配置:
import {HashRouter as Router,Route,NavLink
} from "react-router-dom";
import Home from "./Home";
import About "./About";
function App() {return (<Router><div className="nav"><NavLink to="/" exact>首页</NavLink>|<NavLink to="/about">关于</NavLink></div><div className="views"><Route path="/" component={Home} exact></Route><Route path="/about" component={About}></Route></div></Router>);
}export default App;
路由传参
//导入路由相关的组件
//HashRouter哈希路由 as起别名 router路由
//router 存放路由的容器
//Navlink 导航链接
import{HashRouter as Router,Route,NavLink,Redirect,Switch} from 'react-router-dom'
function App(){return (
<Router>{/*导航部分*/}<div className='nav'><NavLink to="/" exact>首页</NavLink> |<NavLink to="/about">关于页面</NavLink> |<NavLink to="/details/abc">abc详情</NavLink> |<NavLink to="/details/123">123详情</NavLink> |</div><div className='views'><Route path='/' component={Home} exact></Route><Route path='/about' component={About}></Route><Route path='/details/:id' component={Details}></Route></div>
</Router>);
}
export default App;
//创建详情页
function Details({match,location}){return (<div><h1>详情内容</h1><p>参数:{match.params.id}</p><p>match:{JSON.stringify(match)}</p><p>location:{JSON.stringify(location)}</p></div>);
子路由
父路由是普通路由,在父组件中配置子路由
在子路由中配置重定向Redirect,可控制子路由默认显示页面
function Admin() {return (<div><h1>Admin页面</h1><p><NavLink to="/admin/dash">概述</NavLink><NavLink to="/admin/orderlist">订单列表</NavLink></p><Route path="/admin/dash" component={Dash}></Route><Route path="/admin/orderlist" component={OrderList}></Route><Redirect from="/admin" to="/admin/dash"></Redirect></div>);
}
404页面
匹配任意地址,将404页面放在最后,并在外层加上组件控制只匹配一个页面。当无其他匹配页面时就显示404页面
<div className="views"><Switch><Route path="/" component={Home} exact></Route><Route path="/about" component={About}></Route><Route path="/details/:id" component={Details}></Route><Route path="/admin" component={Admin}></Route><Route path="*" component={NoMatch}></Route></Switch></div>
路由守卫
创建一个登录页面、添加Priviate权限页面
function Login({location,history}){function logIt(){// 存储到本地localStorage.setItem("isLog",true);// 获取redirect信息var redirect = location.state.redirect||"/";// 如果没有拿到就跳转到首页history.push(redirect);}return<div><h1>登录</h1><button onClick={logIt}>登录</button></div>}
React路由使用详解相关推荐
- React 路由react-router-dom详解
React 路由react-router-dom详解 ( 路由嵌套 + 路由传参 + 路由权限 + 路由优化 按需导入 + 404页面 ) 前面我们先了解一下 路由是什么? 路由分类有哪些?内置API ...
- 一文带你搞懂React路由(详解版)
文章目录 React 路由
- React 路由组件 详解
文章目录 路由组件 1.HashRouter和BrowserRouter 2.Route 3.Router 4.Link和NavLink 5.Redirect 6.Switch 7.withRoute ...
- js路由在php上面使用,React中路由使用详解
这次给大家带来React中路由使用详解,React中路由使用的注意事项有哪些,下面就是实战案例,一起来看一下. 路由 通过 URL 映射到对应的功能实现,React 的路由使用要先引入 react-r ...
- 25、react 中使用路由 router 详解
react 中使用路由 router 详解 今天开始最新的一个模块,也是 react 开发中最重要的一部分,就是路由. SPA 理解 我们使用原生的 HTML + CSS + JavaScript 开 ...
- python Django Rest_Framework框架 视图集与路由Routers详解(图文并茂版)
视图集与路由Routers详解 视图集 ViewSet视图集 代码实现 GenericViewSet视图集 代码实现 ModelViewSet视图集 ReadOnlyModelViewSet视图集 路 ...
- 单臂路由的详解及简单配置
单臂路由的详解及简单配置 前言 1.什么是单臂路由 2.什么是逻辑子接口 3.单臂路由的配置 4.单臂路由的优缺点 1.什么是单臂路由 单臂路由(router-on-a-stick)是指在路由器的一个 ...
- ls路由算法_路由算法详解
路由算法详解1. 引言 2. 路由器基础知识 3. LS算法 4. 示例:Dijkstra算法 5. DV算法 6. 分级路由 如果您已经阅读过博闻网中的路由器工作原理一文,您会了解到路由器的作用是管 ...
- 前端路由模式详解(hash和history)
前端路由模式详解(hash和history) 前端路由有两种模式:hash 模式和 history 模式,接下来分析这两种模式的实现方式和优缺点. hash 模式 hash 模式是一种把前端路由的路径 ...
最新文章
- 确定一组矩形是否有两个重叠的算法
- ResNet最强改进版来了!ResNeSt:Split-Attention Networks
- Hadoop 03_核心:读写流程
- ROS在类中发布和接受消息(自定义消息)
- 巧用clear:both
- 有限元基础及ANSYS应用 - 第6节 - 自重作用下均匀截面直杆的ANSYS分析
- 偷偷看了同事的代码找到了优雅代码的秘密
- Origin 不连续数据点做出连续曲线
- 描述一个完美的约会_在网上约会之前,要学习发现一个骗子
- 分享 29 款 Chrome 插件,总有一款适合你
- CClientDC类
- 最全的数据分析平台整理
- 24小时切换简易时钟-51单片机
- Corel Knockout 2.0使用教程
- 射频单刀双掷开关常见结构
- 机顶盒编解码视频质量测试方法
- Easy Connect for Mac 安装教程
- 内部毕业学生对老男孩教育的客观评价
- 小学数学学习:神奇的走马灯数 142857
- lol2月20服务器维护,英雄联盟2月20日维护到几点 今天LOL几点可以进游戏
热门文章
- 微信支付退款回调踩坑及解决方案(附解密代码)
- Jumony Core 3,真正的HTML引擎,正式版发布
- 据说Jumony Parser是目前对HTML规范支持最好的HTML Parser
- 贵金属跌跌不休竞相比惨黄金跌去二位数钯金跌去三位数
- SpringMVC作用域操作详解
- esper java_java-从Esper套接字开始
- 成都小甜甜火爆抖音,这五个竖屏化思维你也该掌握!-新媒之家
- 决战阿法狗 柯洁会使出人类最后的杀招?
- Redis(分布式篇)
- 如何用计算机做排列函数,25个电脑办公技巧 办公族必懂的电脑小技巧 (全文)