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