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

问题描述 投票:0回答:6

我有以下场景:

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

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

reactjs react-router
6个回答
17
投票

ReactJs
中,您应该使用
browserHistory
来实现此目的。这会照顾您的历史记录,您不需要自己实现这些功能。

browserHistory 有 2 个方法

push()
replace()
,它们的功能与 @fazal 在他的答案中提到的相同,但以更好的方式。

因此,如果您想避免用户回到之前的状态,您需要使用

browserHistory().replace

首先将其导入到您的代码中:

import {browserHistory} from 'react-router'

用户激活后,您可以执行以下操作:-

browserHistory.replace(//your new link)

7
投票

HTML5历史记录API提供了两种方法来

Adding and modifying history entries

pushState()
:保留后退状态
replaceState()
:无后退状态

假设您正在使用

react-router
。 所以,关于你的组件使用

this.props.history.replaceState('your new state')

了解更多:操作浏览器历史记录

视频:REACT JS 教程 #6 - React Router 和 React JS 单页应用程序简介


6
投票

我知道这是旧的,但我有一个类似的问题,并且其他答案都不是 100% 适用于我的版本或

React
但这应该通过清除附加路径在更新的版本中工作。

   
  //replace(path, state)
  this.props.history.replace("/home", "urlhistory");


0
投票

如果你想找回一个子目录,无论历史记录是什么,你都可以这样做

<Link to="./../" > .... </Link>

navigate("./../")

-4
投票

在您想要更改路线的地方运行此块

history.entries = [];
history.index = -1;
history.push(`/route`);

这将清除历史记录并更改为新的历史记录。


-6
投票
window.location.href = 'Your path';

document.location.replace().
© www.soinside.com 2019 - 2024. All rights reserved.