react-router 中 exact 精确匹配使用
生活随笔
收集整理的這篇文章主要介紹了
react-router 中 exact 精确匹配使用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
應(yīng)用場景
exact 需要在哪種場景使用
1. 當(dāng)要匹配路由樣式 比如要匹配 to=“/” 但當(dāng)跳轉(zhuǎn)到其他路由時 to=“/”路由到樣式還是存在,因為路由匹配是模糊的 所以要精確匹配 to=“/”路由時候需要加個 exact 來達(dá)到精確匹配的目的
2. 當(dāng) 父路由為 to=“/about” 時候 嵌套的子路由也有 一個為 to=“/about” 但還有其它的子路由 分別是 to=“/about/user” to=“/about/message”
這時候子路由需要一種樣式,父路由也需要一種樣式,但是其中一個子路由和父路由一樣,這是要想將此路由樣式生效就需要用到 exact 來進(jìn)行精確匹配
這里主要講第二種匹配
如圖:
代碼 (父路由)
/about 路由不能精確匹配
如果 父路由 /about 進(jìn)行精確匹配 那么當(dāng)點擊子路由時候 父路由樣式將會失效
<div className="App"> <NavLink exact to="/" activeClassName="link-active">首頁</NavLink> <NavLink to="/about" activeClassName="link-active">關(guān)于</NavLink> <NavLink to="/profile" activeClassName="link-active">我的</NavLink> <NavLink to="/user" activeClassName="link-active">用戶</NavLink> <hr/>
// 匹配父路由所顯示的信息 <Switch> <Route exact path="/" component={Home}></Route> <Route path="/about" component={About}></Route> <Route path="/profile" component={About}></Route> <Route path="/user" component={About}></Route> </Switch> </div>
// 下面代碼展示 about 子路由 進(jìn)行 精確匹配
<div>
<h2>my/我的</h2>
<NavLink exact to="/about" activeClassName="about-active">信息</NavLink>
<NavLink exact to="/about/user" activeClassName="about-active">用戶</NavLink>
<hr/>
<Route path="/about" exact>
個人信息
</Route>
<Route path="/about/user">
用戶名稱
</Route>
</div>
完整代碼
目錄
index.js
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
import {BrowserRouter} from 'react-router-dom'
ReactDOM.render(
<BrowserRouter>
<App />
</BrowserRouter>
, document.getElementById("root"));
App.js
import React from "react";
import { NavLink, Switch, Route, withRouter} from "react-router-dom";
import Home from "./components/home";
import About from "./components/about";
import './app.css'
function App() {
return (
<div className="App">
<NavLink exact to="/" activeClassName="link-active">首頁</NavLink>
<NavLink exact to="/about" activeClassName="link-active">關(guān)于</NavLink>
<NavLink to="/profile" activeClassName="link-active">我的</NavLink>
<NavLink to="/user" activeClassName="link-active">用戶</NavLink>
<hr/>
<Switch>
<Route exact path="/" component={Home}></Route>
<Route path="/about" component={About}></Route>
<Route path="/profile" component={About}></Route>
<Route path="/user" component={About}></Route>
</Switch>
</div>
);
}
export default withRouter(App);
app.css
a {
margin: 0 10px;
}
a.active, a.link-active {
color: red;
font-size: 30px;
}
a.about-active {
color: orange;
font-size: 20px;
}
about.js
import React, { PureComponent } from 'react';
import { NavLink, Route } from 'react-router-dom';
class My extends PureComponent {
state = { }
render() {
return (
<div>
<h2>我是about</h2>
<NavLink exact to="/about" activeClassName="about-active">信息</NavLink>
<NavLink exact to="/about/user" activeClassName="about-active">用戶</NavLink>
<hr/>
<Route path="/about" exact>
個人信息
</Route>
<Route path="/about/user">
用戶名稱
</Route>
</div> );
}
}
export default My;
//home.js profile.js user.js 這幾個組件自己隨便寫,這里主要代碼在 App.js 和 about.js 里
總結(jié)
以上是生活随笔為你收集整理的react-router 中 exact 精确匹配使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BUUCTF Crypto
- 下一篇: python 泰森多边形法函数属性理解(