路由维护了 URL 地址和组件的映射关系, 通过这个映射关系, 我们就可以根据不同的 URL 地址,去渲染不同的组件。
npm install react-router-dom
通过指定监听模式:
Link
修改路由 URL 地址Route
匹配路由地址BrowserRouter 和 HashRouter 的作用:
Link 的作用:
Route 的作用:
需求,界面上有两个按钮, 点击不同按钮显示不同组件:
在看如上的这个特性之前首先降低一下 React 的版本,这里博主介绍的不是 React 最新版本的语法,关于 React 后面更新的版本后面在更新,运行如下执行:
npm install --save react@16.12.0 react-dom@16.12.0
更改 index.js:
import ReactDOM from 'react-dom';
import React from 'react';
import App from './App';
ReactDOM.render(<App/>, document.getElementById('root'));
App.js:
import React from 'react';
import Home from './components/Home'
import About from './components/About'
import {BrowserRouter, HashRouter, Link, Route, Routes} from 'react-router-dom';
class App extends React.PureComponent {
render() {
return (
<div>
<HashRouter>
<Link to={'/home'}>Home</Link>
<Link to={'/about'}>About</Link>
<Routes>
<Route path="/" element={<Home/>}/>
<Route path="home" element={<Home/>}/>
<Route path="about" element={<About/>}/>
</Routes>
</HashRouter>
</div>
)
}
}
export default App;
About.js:
import React from 'react';
class About extends React.PureComponent {
render() {
return (
<div>About</div>
)
}
}
export default About;
Home.js:
import React from 'react';
class Home extends React.PureComponent {
render() {
return (
<div>Home</div>
)
}
}
export default Home;
在 V5 与 V6 它们之间的写法还是有更改的,具体的更改内容参考:https://www.querythreads.com/error-error-a-route-is-only-ever-to-be-used-as-the-child-of-routes-element/
官网文档地址: https://reactrouter.com/web/guides/quick-start
BrowserRouter
HashRouter
模糊
匹配exact
属性, 开启 精准
匹配当前资源地址:/home/about
模糊匹配:
App.js:
import React from 'react';
import Home from './components/Home'
import About from './components/About'
import {BrowserRouter, Link, Route} from 'react-router-dom';
class App extends React.PureComponent {
render() {
return (
<div>
<BrowserRouter>
<Link to={'/home'}>Home</Link>
<Link to={'/home/about'}>About</Link>
<Route path="/home" component={Home}/>
<Route path="/home/about" component={About}/>
</BrowserRouter>
</div>
)
}
}
export default App;
精准匹配:
App.js:
import React from 'react';
import Home from './components/Home'
import About from './components/About'
import {BrowserRouter, Link, Route} from 'react-router-dom';
class App extends React.PureComponent {
render() {
return (
<div>
<BrowserRouter>
<Link to={'/home'}>Home</Link>
<Link to={'/home/about'}>About</Link>
<Route exact path="/home" component={Home}/>
<Route exact path="/home/about" component={About}/>
</BrowserRouter>
</div>
)
}
}
export default App;
除了 Link 可以修改资源地址外,还可以通过 NavLink 修改,也是可以的。
NavLink 注意点:
exact
属性, 开启精准匹配当前资源地址: /home/about
关于 NavLink 更多的 Api 可去官方文档进行查看:
如上图中的我所标记出来的一个属性是设置选中激活状态下的样式,如果是模糊匹配出现的效果就是其它的 Link 状态链接的样式也会进行更改,需要设置为精确匹配才可以达到点击那个就是那个链接的样式改变的效果。
也就是说,在浏览器的路径当中如果是 home/about 下方页面,会渲染出两个组件分别是 home 与 about 组件。但是在 v5 与 v6 好像 React 已经做出了改动特性与语法会有所不同,本篇文章到此为止就差不多就如上这些内容了,其它的内容我会再起一篇文章继续介绍。
^Route注意点: NavLink 注意点与 Route 同理
本期结束咱们下次再见👋~
🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗
![输入图片说
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。