需求场景1:用户注册三步需求:
在快付小店项目开发中,有这样一个需求:用户进入A页面(招商首页),点击注册按钮,进入B页面(注册第一步),第一步注册完后,点击下一步,把第一步注册信息上报给服务端保存,跳转到C页面(注册第二步),第二步注册完后,点击下一步,把第二步注册信息上报给服务端保存,跳转到D页面(注册第三步),这时候,用户发现忘记了第三步注册中的某一个信息,需要确定后才能注册,所以这时候需要放弃注册;此时产品需求是:点击浏览器返回,返回到用户一开始进入的A页面,而不是默认返回上一页(C页面)
需求场景2:tab切换:
两个tab页面进行切换,但是点击返回的时候,还是返回到初始进来的页面;
解决方案:
思路 因为第一步、第二步的信息实则已经存储在了服务器,所以第三步返回的时候不需要再回到之前的页面;这个时候可以使用vue-router中另一种跳转路由的方法:router.replace(location, onComplete?, onAbort?) (跟 router.push 很像,唯一的不同就是,它不会向 history 添加新记录,而是跟它的方法名一样 —— 替换掉当前的 history 记录)
代码:
/**
* A页面跳转到B页面
* */
goFirstRegisterPage(){
this.$router.replace({name:"B"});
},
/**
* B页面跳转到C页面
* */
goSecondRegisterPage(){
this.$router.replace({name:"C"});
},
/**
* C页面跳转到D页面
* */
goThridRegisterPage(){
this.$router.replace({name:"D"});
},
当希望通过点击浏览器返回按钮,返回到自己随意的页面,这个时候需要使用beforeRouteLeave 这个路由生命周期函数中进行了;判断返回的页面如果是上一个页面,然后通过next() 做重定向