Demo 的最外侧包裹了一个 或 

样式文件扔public/css下,在index.html里引入即可
,点击访问 bootstrap.css 样式文件
import React from 'react';
import ReactDOM from 'react-dom/client';
import { BrowserRouter } from 'react-router-dom'
import App from './App';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<BrowserRouter>
<App />
</BrowserRouter>
</React.StrictMode>
);
import React, { Component } from 'react'
import { Link, Route } from 'react-router-dom'
import About from './components/About'
import Home from './components/Home'
export default class App extends Component {
render() {
return (
<div>
<div className="row">
<div className="col-xs-offset-2 col-xs-8">
<div className="page-header"><h1>React Router Demo</h1></div>
</div>
</div>
<div className="row">
<div className="col-xs-2 col-xs-offset-2">
<div className="list-group" style={{ whiteSpace: 'pre-wrap' }}>
<h3>{`原生html中靠跳转不同页面`}</h3>
{`About\nHome`}
<hr />
<h3>在React中靠路由链接实现切换不同组件</h3>
{`\n\tAbout\n\tHome\n `}
<br />
<Link className="list-group-item" to="/about">About</Link>
<Link className="list-group-item" to="/home">Home</Link>
</div>
</div>
<div className="col-xs-6">
<div className="panel">
<div className="panel-body" style={{ whiteSpace: 'pre-wrap' }}>
{/* Route 注册路由 */}
<h3>Route 注册路由</h3>
{` \n `}
<br />
<Route path='/about' component={About} />
<Route path='/home' component={Home} />
</div>
</div>
</div>
</div>
</div>
);
}
}
import React, { Component } from 'react'
export default class About extends Component {
render() {
return (
<h3>我是About的内容</h3>
)
}
}
import React, { Component } from 'react'
export default class Home extends Component {
render() {
return (
<h3>我是Home的内容</h3>
)
}
}

菜单栏选中添加高亮效果,使用 Link 标签的升级版
NavLink 带有一个 activeClassName 属性,可为其赋值高亮时的样式类名,默认值是active,如果你的高亮样式类名正好是 active,那就可省略不写这个属性了
NavLink可以实现路由链接的高亮,通过activeClassName指定样式名,默认active
修改上面4.2部分代码如下:
import { NavLink, Route } from 'react-router-dom'
<NavLink className="list-group-item" to="/about">About</NavLink>
<NavLink className="list-group-item" to="/home">Home</NavLink>
NavLink 身上很多属性是冗余的,如果你写了很多NavLink标签的话,此时我们可以选择防撞NavLink
这里封装成 MyNavLink 组件放到 src/components 下
补充一个小知识点:标签体内容依然是特殊的标签属性,自动收集到 props.children 属性上
import React, { Component } from 'react'
import { NavLink } from 'react-router-dom'
export default class MyNavLink extends Component {
render() {
return (
// 标签体内容依然是特殊的标签属性,自动收集到 props.children 属性上
// {this.props.children}
// 很明显,既然 children 是 props 默认可接收的属性,那如下那般写法岂不是更简洁了~
<NavLink className="list-group-item" {...this.props} />
)
}
}
import { Route } from 'react-router-dom'
import { MyNavLink } from './cmponents/MyNavLink'
<MyNavLink to="/about">About</MyNavLink>
<MyNavLink to="/home">Home</MyNavLink>
推荐学习参考视频:尚硅谷React教程-P77-路由的基本使用