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

React Router Dom点击<Link>后URL更新但<Route>页面不渲染问题求助

问题原因

return (<Switch> 组件的路由匹配规则是**从上到下优先匹配第一个符合规则的路由**,匹配成功后就不会继续校验后续路由,你现在的代码存在两个问题导致匹配失效:
1. 路由顺序错误:`/admin/users/:id` 路由放在了更具体的 `/admin/users/:id/userTrans` 路由前面,`/admin/users/1/userTrans` 路径会被前者先匹配到,系统会把`1/userTrans`整体识别为`id`参数的值,直接渲染DriverPage组件,不会走到后续的UserTransactions路由。
2. 动态参数写法错误:路由中写的`:1`是错误的动态参数格式,动态参数位置应该填参数名而非具体值,你需要匹配任意用户id的话应该写为`:id`。

### 修复方案
调整路由顺序,把更具体的路由移到模糊路由前面,同时修正动态参数写法即可,修改后的App组件代码如下:
```jsx
const App = () => {
    const pathBase = '/admin';
    return (
        <div className="container">
            <Tabbar/>
)
<Switch>
            <Route exact path={`${pathBase}/users/`} component={AllUsers} />
            {/* 把更具体的用户交易路由放到:id路由前面 */}
            <Route path={`${pathBase}/users/:id/userTrans`} component={UserTransactions}/>
            <Route path={`${pathBase}/users/:id`} component={DriverPage}/>
            <Route path={`${pathBase}/rides`} component={AllRides}/>
            <Route path={`${pathBase}/chat`} component={AllMessages}/>
            <Route path={`${pathBase}/userMessages`} component={UserMessages}/>
            <Route path={`${pathBase}/mail`} component={Mailing}/>
            <Route path={`${pathBase}/transactions`} component={AllTransactions}/>
            <Route path={`${pathBase}/sales`} component={Sales}/>
            <Route path={`${pathBase}/ads`} component={Ads}/>
            <Route path={`${pathBase}/admins`} component={Admins}/>
            <Route path={`${pathBase}/stats`} component={Stats}/>
        </Switch>
    </div>  
);

}

你原有Link组件的跳转逻辑不需要修改,调整后点击按钮即可正常渲染UserTransactions组件。

内容的提问来源于stack exchange,提问作者Wells
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:18:00