javascript - vue2.0中router.repalce跟router.push有什么區(qū)別,二者的應(yīng)用場(chǎng)景是會(huì)有怎樣的區(qū)別?
問題描述
vue2.0中,在其對(duì)應(yīng)的router2.0中解釋router.replace跟router.push二者很像,唯一的區(qū)別是router.replace不會(huì)向 history 添加新記錄,而是替換掉當(dāng)前的 history 記錄。那么試問二者的應(yīng)用場(chǎng)景有什么不同?
問題解答
回答1:可以把路由router想象成一個(gè)訪問記錄的棧,router.replace()是替換掉棧頂,而router.push()則是向棧中再堆如一個(gè)新記錄。
一般情況下,要做前進(jìn)后退的瀏覽記錄管理的,基本上都是用router.push(),但是也是有一些特殊情況需要用到router.replace()。比如,有一個(gè)授權(quán)頁,用戶在按流程操作時(shí),某一步需要授權(quán),是直接跳到授權(quán)頁,授權(quán)頁提交授權(quán)請(qǐng)求,直到成功授權(quán)后,跳到流程中的下一步操作的地址。此處,授權(quán)請(qǐng)求的那頁面應(yīng)該用replace去替換掉自身的訪問記錄,防止用戶跳到下一步流程后按后退鍵回退到授權(quán)頁,而導(dǎo)致重復(fù)授權(quán)。
回答2:沒有history的話,瀏覽器后退就無法找到上一個(gè)頁面的了。
