我有一个案例:用户打开激活链接。用户完成激活过程后,系统会将他移动到另一个页面。我不想在浏览器上保留激活网址,并阻止用户返回激活步骤。反应路由器:更改URL并清除历史记录
我该如何得到这种情况?
感谢,
我有一个案例:用户打开激活链接。用户完成激活过程后,系统会将他移动到另一个页面。我不想在浏览器上保留激活网址,并阻止用户返回激活步骤。反应路由器:更改URL并清除历史记录
我该如何得到这种情况?
感谢,
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
在reactJS你应该使用browserHistory
用于此目的。这照顾你的历史,你不需要自己实现这些功能。
浏览器历史记录有两种方法push()
和replace()
,它们的功能与@fazal在他的回答中提到的相同,但用更好的方式。
所以,如果你想避免用户回到以前的状态,你需要使用browserHistory().replace
开始将它导入到你的代码: -
import {browserHistory} from 'react-router'
用户已经激活你以下后: -
browserHistory.replace(//your new link)
嗨, 我试过这种方式,我仍然无法在浏览器上重写网址。 (我知道更改网址并不是SPA应用的常见行为。) – user3468795
最后,我可以用这些语句解决: history.replaceState({},document.title时,URL); props.router.replace(url); – user3468795