为了模块化,我试图将Router
和Switch
组件分成两个不同的文件,但是它不起作用,并且错误似乎也没有意义。
主文件App.jsx
呈现如下内容:
<Router>
<div>
<Nav />
<AppRouter />
</div>
</Router>
您会注意到路由器仅包含1个孩子,即一个div。
AppRouter
呈现如下内容:
<Switch>
<Route path="/" exact component={Home} />
<Route path="/list" exact component={List} />
<Route component={NotFound} />
</Switch>
Nav
仅包含Link
个列表:
<Link to="/">Home</Link>
据我所知,由于Router
仅包含一个孩子,并且由于Switch
应该与多个孩子一起工作,因此该代码应该没问题。
但是此代码失败:
Uncaught Error: A <Router> may have only one child element
You can use a live example here.
我还注意到了一个奇怪的行为:当我删除一些Route
时,只剩下1个Route
,就没有更多错误了,但是导航不再起作用了(它改变了URL,仅此而已。)
那里发生了什么以及如何修复我的代码?
答案 0 :(得分:0)
您必须像在import { Switch, Route } from "react-router-dom";
中的AppRouter.jsx
一样导入 Switch 。
您无法导入BrowserRouter as Switch