[英]Reverse state on browser back button in reactjs
為了獲得一致的用戶體驗,我希望我的反應應用程序在用戶單擊瀏覽器后退按鈕時可以反轉其狀態。
例如,如果我使用函數調用更改狀態中的元素:
changeVar = (idx) => (event) => {
this.setState({thisIndex: idx});
//how to notify browser stack of this change?
}
我怎樣才能將它添加到瀏覽器堆棧中,以便用戶可以單擊瀏覽器中的后退按鈕來反轉狀態更改?
所以一般來說問題是“如何處理瀏覽器Back / Next按鈕?” 或者“我如何對用戶導航歷史做出反應?”
像History API及其.pushState
這樣的東西來到現場。
簡而言之:
history.pushState(stateData)
.pushState
或.replaceState
創建時) history.state
讀取的相應狀態數據,您可以適當地恢復應用程序狀態 到目前為止,最后一個問題是如何將應用程序中的所有數據放在單個對象中,並在以后使用模塊的狀態恢復所有應用程序。 在這里,redux得到了幫助。 Redux假設您在所有應用程序上只有一個Store。 換句話說,所有狀態都已包含在單個對象中,您只需將其傳遞到.pushState()
以存儲並在單擊“返回”按鈕后將其還原。
PS還記得我講過有關重大變化嗎? 因為“整個應用程序中的所有數據”足夠大,所以會在存儲器中存儲數百萬次存儲的開銷。 如果單擊“返回”按鈕說只是折疊下拉列表,那將是一個愚蠢的行為。
PPS並且由於history
是全局的,因此無法按組件方式存儲/恢復狀態。 所以也許(只是可能)最好為您的組件實現類似“狀態更改歷史記錄”的內容,並建議用戶使用一些不同的控件來恢復其狀態(而不是單擊瀏覽器中的“返回”按鈕)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.