我有以下情况:
用户打开激活链接;用户完成激活过程后,系统会将它们移动到另一个页面 我不想在浏览器的历史记录中保留激活链接,因为当用户返回时,他们将再次进入激活步骤。
如何替换浏览器的历史记录以从我的应用程序中删除某些请求?
答案 0 :(得分:10)
在reactJS中,您应该使用browserHistory
来实现此目的。这会照顾你的历史,你不需要自己实现这些功能。
browserHistory有两个方法push()
和replace()
,它们的功能与他在答案中提到的@fazal功能相同但更好。
因此,如果您想避免用户返回之前的状态,则需要使用browserHistory().replace
首先将其导入您的代码: -
import {browserHistory} from 'react-router'
用户激活后,您可以执行以下操作: -
browserHistory.replace(//your new link)
答案 1 :(得分:3)
HTML5历史记录API为Adding and modifying history entries
提供了两种方法。
pushState()
:保留了后退状态
replaceState()
:没有后退状态
假设您正在使用react-router
。
所以,在你的组件上使用
this.props.history.replaceState('your new state')
了解详情:https://developer.mozilla.org/en-US/docs/Web/API/History_API
视频:https://www.youtube.com/watch?v=1iAG6h9ff5s&index=6&list=PLoYCgNOIyGABj2GQSlDRjgvXtqfDxKm5b
答案 2 :(得分:1)
我知道这很旧,但是我遇到了类似的问题,其他答案都没有100%适用于我的版本或React
,但这应该可以通过清除附加路径在最新版本中使用。
//replace(path, state)
this.props.history.replace("/home", "urlhistory");
答案 3 :(得分:0)
在您要更改路线的地方运行此块
history.entries = [];
history.index = -1;
history.push(`/route`);
这将清除历史记录并更改为新记录。
答案 4 :(得分:-2)
A B C D \
0 1. 99 The Legend of Zelda: Ocarina of Time ... User: 9.1
1 2. 98 Tony Hawk's Pro Skater 2 ... User: 7.4
2 3. 98 Grand Theft Auto IV ... User: 7.5
3 4. 98 Red Dead Redemption 2 ... User: tbd
4 5. 98 SoulCalibur ... User: 8.7
E
0 Nov 23, 1998
1 Sep 20, 2000
2 Apr 29, 2008
3 Oct 26, 2018
4 Sep 8, 1999
或
window.location.href = 'Your path';