React Router:通配符匹配匹配具有查询参数的其他路由



使用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>

相关内容

  • 没有找到相关文章

最新更新