react-router-dom
react-router-dom是React提供给web端的路由插件,针对React Native有其它的插件
安装:
1 | npm install react-router-dom --save |
1 路由定义
在App.js中配置路由
<BrowserRouter>: 包裹所有的路由<Route>: 设置具体的路由path: 设置路由的路径exact: 只有路径完全匹配时才会显示component: 配置路由对应的组件
1 | import React, { Component } from 'react'; |
2 单页面路由跳转
2.1 Link方式
单页面跳转使用Link而不用a标签的原因:
a标签跳转会再次刷新页面,再次请求html文件,这样会造成性能的损耗Link实现跳转时,不会再次请求html文件,这样既节省了性能也满足单页面应用的规则
Link的使用:
- 路由路径的定义:
path: ‘路由路径’
1 | <Route path='/detail' exact component={Detail}></Route> |
- 使用
Link标签的组件必须被<BrowserRouter>包裹
1 | //导入 |
2.2 js方式
/admin: 目标路由地址
1 | this.props.history.push('/admin') |
- 跳转带参数的形式
- 参数只能是字符串形式,对象、数组传递不了,简单数组(元素为数字或字符串)会解析成字符串后传递
1 | this.props.history.push('/admin/' + params) //params:参数内容 |
注意:
- 只有在路由管理的直接组件中可以调用上面的接口
3 路由参数的传递
3.1 动态路由方式
动态路由方式传递参数就是在使用Link标签跳转时携带参数
定义路由既传参名称
1
2
3
4<Route path='/路径/:参数名' exact component={组件名}></Route>
//案例
<Route path='/detail/:id' exact component={Detail}></Route>传递参数
1
2
3
4<Link to={'/路径/' + 参数值}>
//案列
<Link to={'/detail/' + item.id}> //item.id = 1组件中接受参数
- 可以通过取到的参数在
componentDidMount生命周期函数中发送网络请求
1
2
3
4this.props.match.params.参数名
//案例
this.props.match.params.id- 可以通过取到的参数在
3.2 ?id=的形式
定义路由既传参名称
1
2
3
4<Route path='/路径' exact component={组件名}></Route>
//案例
<Route path='/detail' exact component={Detail}></Route>传递参数
1
2
3
4<Link to={'/路径?id=' + 参数值}>
//案列
<Link to={'/detail?id=' + item.id}> //item.id = 1组件中接受参数
- 可以通过取到的参数在
componentDidMount生命周期函数中发送网络请求 - 此处注意:返回值需要解析之后才拿得到参数
1
2
3
4this.props.location.search
//返回值:?id=1
//需要解析`?id=1`拿到1- 可以通过取到的参数在