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的话,浏览器后退就无法找到上一个页面的了。