javascript - 尝试加载其他页面时,React Router 正在加载我的主页
问题描述
我有一个在 App.js 中加载的 MainPage,但是当我使用 Browser Router 和 Route 时,它将保留 MainPage 并在其顶部加载第二页。任何提示都会有所帮助。
class App extends Component {
render() {
return(
<BrowserRouter>
<div className="App">
<Mainpage></Mainpage>
</div>
</BrowserRouter>
);
}
}
export default App;
另一件奇怪的事情是它正在加载页面的背景和样式,当按钮甚至没有被按下时它正在路由到它。这是主页。
class Mainpage extends Component {
render() {
return (
<div>
<header>
<nav>
<ul>
<li>
<Link exact to="/meettheteam">
This is a new Page
</Link>
</li>
</ul>
</nav>
</header>
<h1>
THE
<br />
BARBER
<br />
SHOP
</h1>
<p>
<img src={logo} alt="logo" />
<img src={facebookLogo} alt="logoFacebook" />
<img src={twitterLogo} alt="logoTwitter" />
@TheBarberShop
</p>
<ul>
<div className="schedule">
<li>SCHEDULE</li>
</div>
<div className="styles">
<li>STYLES</li>
</div>
<div className="meettheteam">
<li>MEET THE TEAM</li>
</div>
</ul>
<Switch>
<Route exact path="/meettheteam" component={MeetTheTeam} />
</Switch>
{/* <Route path="/stylesandprices" component={StylesAndPrices}/> */}
</div>
);
}
}
export default Mainpage;
解决方案
路由应该包裹在<Switch>
react-router-dom 的组件中
正确用法:
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
import ComponentA from './componenta'
import ComponentB from './componentb'
function App() {
return (
<Router>
<Switch>
<Route path="/">
<ComponentA />
</Route>
<Route path="/componentb">
<ComponentB />
</Route>
</Switch>
</Router>
);
}
export default App
下面的这个例子将第一条路线和第二条路线相互叠加,这与问题的代码片段的结构类似。第一条路线被包裹,Switch
而第二条路线在外面Switch
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
import ComponentA from './componenta'
import ComponentB from './componentb'
function App() {
return (
<Router>
<Switch>
<Route path="/">
<ComponentA />
</Route>
</Switch>
<Route path="/">
<ComponentB />
</Route>
</Router>
);
}
export default App;
提示/建议:
最好的办法是将所有Route
's withSwitch
语句包装在应用程序层次结构的顶层
推荐阅读
- java - iText html2pdf 更改输出 PDF 的大小
- php - update_callback 对多个字段的 register_rest_field 不起作用
- python - 使用 itemgetter() 方法根据元组的第二个值在字典中查找键、值对
- java - 在子项目中跳过 gradle 子任务
- python - 在 Pandas 日期时间系列项目上调用函数进行过滤
- javascript - 使用 Hooks 编辑 React 状态
- php - preg_replace 总和中的任何单词
- wordpress - Wordpress 阻止浏览器?(IE浏览器)
- c# - 如何在 C# 中使用 itext 自动打开 PDF?
- javascript - 将地图发送到内容脚本