Vue-router切換路由時重復點擊同一個路由報錯問題/連續點擊多次路由報錯


這是 vue-router 4.0之后常見的錯誤了,我們自己嘗試看看是出了什么問題:

首先,我們先在路由切換函數中,輸出切換路由路徑之前和切換后的 this.$route

如下圖,

所以,我們認為是 vue-router 的問題

解決方法是:

在路由切換前面添加一句代碼 this.$router.push("/location").catch((err) => { console.log(err); });
如圖,

當然,還有其他解決方法,這里就不一一列舉出來了。

此外,我們在調用 this.$route.path 會因為延時問題而導致錯誤,比如 tabbar中處於活躍狀態時,文本需是活躍類,那么我們會這樣使用來避免出錯:

原因是因為這個延時問題是非常非常短的,我們只需要在這個延時過去之后才判讀當前路徑是否與 this.link(組件路徑)相同,這樣就避免了這個錯誤了。
解釋:上面中當調用了 ItemClick 方法后,this.$route.path 會被賦值為 this.link,然后計算屬性中的 isActive是在這個方法執行后才執行的(這個時間已經足夠然這個延時過去了),所以就避免了這個因為延時問題而導致的錯誤。

以上如有不對,歡迎指正。

對延時問題更加清晰的補充:

點擊首頁,this.$route.path 為 "/home",1s后還是"/home",

然后點擊分類,this.$route.path 為 "/location",之后變為是"/category",
所以能清楚的知道,對 this.$router.replace(...)修改后,this.$route.path 並不會是剛剛修改的那個值,而是要過了這個延時后才被賦予為剛剛所修改的值。


免責聲明!

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



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