我有一個案例:用戶打開激活鏈接。用戶完成激活過程後,系統會將他移動到另一個頁面。我不想在瀏覽器上保留激活網址,並阻止用戶返回激活步驟。反應路由器:更改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