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
相关产品推荐
相关产品推荐

