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

react-router-dom重定向后URL变更但组件未渲染问题求助

react-router-dom 重定向后URL变更但组件不渲染问题

问题背景

  • 已检索Stack Overflow平台多数相关解答,未找到匹配当前使用场景的解决方案,恳请各位开发者协助排查。
  • 核心故障现象:执行重定向操作时,浏览器地址栏URL已发生变更,但对应目标页面的组件并未渲染,只有手动点击页面刷新按钮后,组件才会正常加载展示。
  • 版本影响范围:最初使用react-router-dom v4版本,后续升级至v5版本后问题仍复现,升级到v6版本测试也未解决。

现有自定义重定向组件实现

自定义RedirectToRoute组件代码如下:

const RedirectToRoute = ({ context, isPreviousLocation }) => {
    if (isPreviousLocation) {
        return (
            <Switch key={shortId.generate()}>
                <Redirect to={context.previousLocation} />
            </Switch>
        );
    }
    return null;
};
RedirectToRoute.propTypes = {
    context: PropTypes.object,
    isPreviousLocation: PropTypes.bool,
};

RedirectToRoute.defaultProps = {
    context: {},
    isPreviousLocation: {},
};

export default RedirectToRoute;

组件使用方式

在主组件中按如下方式引入使用该组件:

<CorrectionForm props={someProps} >
  <RedirectToRoute context={context} isPreviousLocation={isPrevLocation} />
  <FormUpdateSuccessMessage />
</CorrectionForms >

已尝试的修复方案

v5版本适配方案

替换为Route嵌套渲染Navigate的写法,代码如下:

<Switch>
  <Route render={() => <Navigate to={context.prevLocation} />} />
<Switch>

v6版本适配方案

升级react-router-dom至v6版本后,替换为Routes嵌套Route的写法,代码如下:

<Routes>
  <Route render={() => <Navigate to={context.prevLocation} />} />
<Routes />

以上所有尝试方案均未解决问题,该问题已阻塞开发数周,恳请各位提供可行的解决思路。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 12:12:21