React-router:更改URL并清除历史记录

时间:2016-09-27 02:59:22

标签: reactjs react-router

我有以下情况:

用户打开激活链接;用户完成激活过程后,系统会将它们移动到另一个页面 我不想在浏览器的历史记录中保留激活链接,因为当用户返回时,他们将再次进入激活步骤。

如何替换浏览器的历史记录以从我的应用程序中删除某些请求?

5 个答案:

答案 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';