一、NavLink
NavLink可以实现路由链接的高亮,通过
activeClassName指定样式名
<NavLink activeClassName="demo" className="list-group-item" to="/about">About</NavLink>
<NavLink activeClassName="demo" className="list-group-item" to="/home">Home</NavLink>
二、Switch的使用
1.通常情况下,path和component是一一对应的关系。
2.Switch可以提高路由匹配效率(
单一匹配)。
1 {/* 注册路由 */}
2 <Switch>
3 <Route path="/about" component={About}/>
4 <Route path="/home" component={Home}/>
5 <Route path="/home" component={Test}/>
6 </Switch>
三、解决多级路径刷新页面样式丢失的问题
1.public/index.html 中 引入样式时不写 ./ 写 / (常用)
2.public/index.html 中 引入样式时不写 ./ 写 %PUBLIC_URL% (常用)
3.使用HashRouter
四、路由的严格匹配与模糊匹配
1.默认使用的是模糊匹配(简单记:【输入的路径】必须包含要【匹配的路径】,且顺序要一致)
2.开启严格匹配:<Route
exact={true} path="/about" component={About}/>
3.严格匹配不要随便开启,需要再开,有些时候开启会导致无法继续匹配二级路由
1 <Switch>
2 <Route exact path="/about" component={About}/>
3 <Route exact path="/home" component={Home}/>
4 </Switch>
五、Redirect的使用
1.一般写在所有路由注册的最下方,当所有路由都无法匹配时,跳转到Redirect指定的路由
2.具体编码:
1 <Switch>
2 <Route path="/about" component={About}/>
3 <Route path="/home" component={Home}/>
4 <Redirect to="/about"/>
5 </Switch>
六、嵌套路由
1.注册子路由时要写上父路由的path值
2.路由的匹配是按照注册路由的顺序进行的
3.代码:
1 import React, { Component } from 'react'
2 import MyNavLink from '../../components/MyNavLink'
3 import {Route,Switch,Redirect} from 'react-router-dom'
4 import News from './News'
5 import Message from './Message'
6
7 export default class Home extends Component {
8 render() {
9 return (
10 <div>
11 <h3>我是Home的内容</h3>
12 <div>
13 <ul className="nav nav-tabs">
14 <li>
15 <MyNavLink to="/home/news">News</MyNavLink>
16 </li>
17 <li>
18 <MyNavLink to="/home/message">Message</MyNavLink>
19 </li>
20 </ul>
21 {/* 注册路由 */}
22 <Switch>
23 <Route path="/home/news" component={News}/>
24 <Route path="/home/message" component={Message}/>
25 <Redirect to="/home/news"/>
26 </Switch>
27 </div>
28 </div>
29 )
30 }
31 }