使用React Router v5。我有一堆像下面这样的路线,在最后有一个通配符路径路线:
<Router>
<Switch>
<Route path="/" exact><Component /></Route>
<Route path="/1" exact><Component1 /></Route>
<Route path="/1/blah" exact><Component2 /></Route>
<Route path="/3" exact><Component3 /></Route>
<Route path="*">
<Redirect to="/" />
</Route>
</Switch>
</Router>
我试图转到/1?query=123
,但随后我被重定向回/
。如果我删除通配符Route,那么转到/1?query=123
将转到其指定的组件。通配符的作用点是在路径完全未知的情况下进行匹配。我该怎么做?
编辑:为了进一步的上下文(从未想过这是必要的(,但我有一个奇怪的文件结构。
它看起来像:文件1<BrowserRouter><AllRoutes /></etc.>
,然后在文件2:<Switch><Route /><Route /><MoreRoutes></Switch>
中,再在文件3:<><Route /><Route /><Route path="*" /></>
中,其中文件3是上面的代码。
编辑2:显然,在文件2中对MoreRoutes做了一些包含操作导致了这个问题。如何实际包括";MoreRoutes";变量是我还没有弄明白的。因为如果将重定向通配符Route放在<MoreRoutes />
或{MoreRoutes}
之后,则通配符将不再匹配
尝试删除"精确的";从路径。
<Router>
<Switch>
<Route path="/"><Component /></Route>
<Route path="/1"><Component1 /></Route>
<Route path="/2"><Component2 /></Route>
<Route path="/3"><Component3 /></Route>
<Route path="*">
<Redirect to="/" />
</Route>
</Switch>
</Router>