vue2.0中,在其對應的router2.0中解釋router.replace跟router.push二者很像,唯一的區別是router.replace不會向history 添加新記錄,而是替換掉當前的history 記錄。 那麼試問二者的應用場景有什麼不同?
ringa_lee
可以把路由router想像成一個存取記錄的棧,router.replace()是替換掉棧頂,而router.push()則是向棧中再堆如一個新記錄。
router.replace()
router.push()
一般情況下,要做前進後退的瀏覽記錄管理的,基本上都是用router.push(),但是也是有一些特殊情況需要用到router.replace()。例如,有一個授權頁,使用者在按流程操作時,某一步需要授權,是直接跳到授權頁,授權頁提交授權請求,直到成功授權後,跳到流程中的下一步操作的位址。此處,授權請求的那頁面應該用replace去替換掉自身的存取記錄,防止用戶跳到下一步流程後按後退鍵回退到授權頁,而導致重複授權。
replace
沒有history的話,瀏覽器後退就找不到上一個頁面的了。
可以把路由router想像成一個存取記錄的棧,
router.replace()
是替換掉棧頂,而router.push()
則是向棧中再堆如一個新記錄。一般情況下,要做前進後退的瀏覽記錄管理的,基本上都是用
router.push()
,但是也是有一些特殊情況需要用到router.replace()
。例如,有一個授權頁,使用者在按流程操作時,某一步需要授權,是直接跳到授權頁,授權頁提交授權請求,直到成功授權後,跳到流程中的下一步操作的位址。此處,授權請求的那頁面應該用replace
去替換掉自身的存取記錄,防止用戶跳到下一步流程後按後退鍵回退到授權頁,而導致重複授權。沒有history的話,瀏覽器後退就找不到上一個頁面的了。