需求場景1:用戶注冊三步需求:
在快付小店項目開發(fā)中,有這樣一個需求:用戶進(jìn)入A頁面(招商首頁),點擊注冊按鈕,進(jìn)入B頁面(注冊第一步),第一步注冊完后,點擊下一步,把第一步注冊信息上報給服務(wù)端保存,跳轉(zhuǎn)到C頁面(注冊第二步),第二步注冊完后,點擊下一步,把第二步注冊信息上報給服務(wù)端保存,跳轉(zhuǎn)到D頁面(注冊第三步),這時候,用戶發(fā)現(xiàn)忘記了第三步注冊中的某一個信息,需要確定后才能注冊,所以這時候需要放棄注冊;此時產(chǎn)品需求是:點擊瀏覽器返回,返回到用戶一開始進(jìn)入的A頁面,而不是默認(rèn)返回上一頁(C頁面)
需求場景2:tab切換:
兩個tab頁面進(jìn)行切換,但是點擊返回的時候,還是返回到初始進(jìn)來的頁面;
解決方案:
思路 因為第一步、第二步的信息實則已經(jīng)存儲在了服務(wù)器,所以第三步返回的時候不需要再回到之前的頁面;這個時候可以使用vue-router中另一種跳轉(zhuǎn)路由的方法:router.replace(location, onComplete?, onAbort?) (跟 router.push 很像,唯一的不同就是,它不會向 history 添加新記錄,而是跟它的方法名一樣 —— 替換掉當(dāng)前的 history 記錄)
代碼:
/**
* A頁面跳轉(zhuǎn)到B頁面
* */
goFirstRegisterPage(){
this.$router.replace({name:"B"});
},
/**
* B頁面跳轉(zhuǎn)到C頁面
* */
goSecondRegisterPage(){
this.$router.replace({name:"C"});
},
/**
* C頁面跳轉(zhuǎn)到D頁面
* */
goThridRegisterPage(){
this.$router.replace({name:"D"});
},
當(dāng)希望通過點擊瀏覽器返回按鈕,返回到自己隨意的頁面,這個時候需要使用beforeRouteLeave 這個路由生命周期函數(shù)中進(jìn)行了;判斷返回的頁面如果是上一個頁面,然后通過next() 做重定向