【发布时间】:2020-02-04 08:48:54
【问题描述】:
我有一个包含以下组件的应用程序
|__Base - /home/Base
|__Try - /home/Base/:try
|__Report - /home/Base/:try/report
Base 是起始屏幕,用户点击一个按钮并点击 Try,在尝试了一些事情后,他点击了提交,这会生成具有一些后端交互的报告,当获取数据时,它会加载报告。
所以我想要的是当用户从报告页面点击返回按钮时,他不应该登陆 Try 页面,而是登陆 Base 页面。
为此,我浏览了反应路由器文档,并尝试在 componentWillUnmount 上使用 history.replace 报告页面
this.props.history.replace(`/home/Base`, {
pathname: `/home/Base`,
search: null,
state: {
isActive: true
}
}, null);
如果报告页面已完全加载并且我按下后退按钮它可以工作,但也会调用 Try Render 方法,然后将我带到基本页面,但如果报告未完全加载并且我按下后退按钮而正在加载微调器,它仍然会进入基本页面,但也会安装和卸载 TRY 组件。
我在这里缺少什么,是什么导致它挂载/卸载或渲染前一个组件,然后加载基础组件,即使我替换了历史堆栈?
【问题讨论】:
-
毫无疑问,但是使用链接按钮直接路由到上一页呢?
-
@keikai 如果用户按下浏览器后退按钮会怎样
-
感谢您的解释,仍然没有问题,但是,也许我们可以在
Try中设置componentWillMount来检查上一页是否为Report,如果是,则路由到Base,是这是一个好方法吗? -
我没有得到解决方案,你能不能详细说明
标签: reactjs react-router react-router-v4