- 深入理解React Router:從原理到實踐
- 李楊韜
- 392字
- 2021-04-16 16:10:34
1.2.2 history.replaceState
1.基本用法
history.replaceState的用法與history.pushState非常相似,區別在于history.replaceState將修改當前的歷史記錄項而不是新建一個。其語法為:

當需要更新當前棧指針所指向的棧記錄,而不是增加歷史棧時,可使用history.replaceState方法,該方法不會使history.length發生變化。

同history.pushState方法類似,history.replaceState方法也可傳遞state到歷史棧的棧記錄中。

對于state對象,history.replaceState同history.pushState一樣使用結構化拷貝算法,如對象中不能設置函數:

2.歷史棧變化
history.replaceState不會改變歷史棧中記錄的數量,如圖1-3所示,當位于路徑/b時,調用history.replaceState({a:3},null,'/c')方法會更新當前棧的信息,棧記錄/b會被替換為/c,此時/b的記錄會丟失,棧的記錄數量不會發生變化。

圖1-3 history.replaceState更新歷史棧棧頂記錄

如果當前的棧指針指向棧中間的記錄,則此時調用history.replaceState方法,僅改變當前棧指針所指向的記錄,如圖1-4所示。

圖1-4 history.replaceState更新非棧頂記錄
/b的記錄被替換為/c的記錄,棧頂的/d記錄不受影響,且棧指針依然位于中間位置。
history.replaceState與history.pushState的主要不同是,history.replaceState會替換當前指針位置的歷史記錄,并不會移動指針,也不會入棧新內容,history.length不會發生變化。
- Learning ROS for Robotics Programming(Second Edition)
- Mastering Objectoriented Python
- Windows系統管理與服務配置
- Python Game Programming By Example
- TypeScript圖形渲染實戰:基于WebGL的3D架構與實現
- 差分進化算法及其高維多目標優化應用
- C#程序設計基礎:教程、實驗、習題
- Mastering Business Intelligence with MicroStrategy
- SpringBoot從零開始學(視頻教學版)
- 從程序員角度學習數據庫技術(藍橋杯軟件大賽培訓教材-Java方向)
- Mastering jQuery Mobile
- Tableau Desktop可視化高級應用
- C++程序設計
- Building Business Websites with Squarespace 7(Second Edition)
- Python物理建模初學者指南(第2版)