You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wouter框架嵌套路由配置后URL正确仍显示NotFound页面问题如何解决

问题根因
  • 嵌套路由路径匹配规则错误:你自定义的NestedRoutes已经给内层Router设置了base为/logs,内层所有Route的path应该是相对于这个base的相对路径,你写/logs/detail相当于内层要匹配/logs/logs/detail才会命中,实际访问/logs/detail的时候内层只匹配到根路径的LogsMainPage,继续往下遍历就命中了通配的404路由。
  • Wouter默认路由匹配是包容性的:默认情况下Wouter会渲染所有匹配成功的Route,而不是匹配到第一个就停止,所以即便前面的路由命中了,后面的通配404也会同时渲染。
修复方案

仅需修改Route.js的配置即可,修改后代码如下:

//Route.js
<NestedRoutes base="/logs">
  {/* Switch组件实现排他匹配,匹配到第一个符合的路由就停止 */}
  <Switch>
    <Route path="/">
      <LogsMainPage updateQuery={setQuery} />
    </Route>
    {/* 内层路径相对于base /logs,直接写/detail即可,不需要再加/logs前缀 */}
    <Route
      path="/detail"
      component={props => {
        return React.createElement(LogDetailsPage, {
          currentMainPageQuery: query,
          ...props,
        });
      }}
    />
    <Route
        path={'/:rest*'}
        component={params => <h1>Not Found {params.rest}</h1>}
      />
  </Switch>
</NestedRoutes>

注意使用前需要先从wouter包中引入Switch组件

内容的提问来源于stack exchange,提问作者ssuhat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 06:45:09