vue.router router.replace點兩次返回問題及解決方案


三個頁面a , b , c , a頁面router.push跳轉至b,b再router.push跳轉至c,c使用$router.replace("b")回到b,然后點擊b頁面的返回鍵,需要點擊兩次才能回到a頁面。
通過進一步的觀察發現,第一次點擊其實並不是沒有反應,而是頁面返回到了首次的b頁面。
這就是說,在C頁面使用replace替換掉的是C頁面的路由,C頁面之前的B頁面歷史記錄還存在。
要c保持router.replace至b方式不變,b頁面返回鍵點擊一次正常返回a頁面
解決方法:使用replace方法之后,再使用router.go(-1)方法返回一次就可以。
例:
    this.$router.replace({name:'b'})
    this.$router.go(-1)
12
router.push、router.replace、router.go的區別
1.this.$router.push()
描述:跳轉到不同的url,但這個方法會向history棧添加一個記錄,點擊后退會返回到上一個頁面。
2.this.$router.replace()
描述:同樣是跳轉到指定的url,但是這個方法不會向history里面添加新的記錄,點擊返回,會跳轉到上上一個頁面。上一個記錄是不存在的。
3.this.$router.go(n)
相對於當前頁面向前或向后跳轉多少個頁面,類似 window.history.go(n)。n可為正數可為負數。
例:
this.$router.go(-1)  // 返回上個頁面


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM