router.replace跟router.push的区别

在学习案例过程中,遇到关于router.replace跟router.push的使用问题。

网上查询一番后,遇到一老哥的答案解释相对容易理解:

可以把路由router想象成一个访问记录的栈,router.replace() 是替换掉栈顶,而router.push() 则是向栈中再堆入一个新记录。

一般情况下,要做前进后退的浏览记录管理的,基本上都是用router.push(),但是也是有一些特殊情况需要用到router.replace()。

比如,有一个授权页,用户在按流程操作时,某一步需要授权,是直接跳到授权页,授权页提交授权请求,直到成功授权后,跳到流程中的下一步操作的地址。此处,授权请求的那页面应该用replace去替换掉自身的访问记录,防止用户跳到下一步流程后按后退键回退到授权页,而导致重复授权。

没有history的话,浏览器后退就无法找到上一个页面的了。

你可能感兴趣的:(router.replace跟router.push的区别)