router跳轉兩次

環境:

  • vue cli3項目

問題:

路由的參數沒有,導致頁面報錯,實際是路由跳轉兩次,第一次有參數,第二次沒有

分析:

既然跳轉了兩次首先應該想發起路由跳轉的事件裏面是否出現重複的this.$router.push,查看一番並沒有,於是想到全局的路由守衛中或許出現重複跳轉,結果發現還是沒有,結果只能打斷點調試查看,發現路由跳轉的事件沒有執行兩次,但是路由守衛執行了兩次,這說明肯定有地方多調用了一次。最後全局搜索發現在根組件裏面做了路由監聽裏面

watch: {
	'$route': {
		deep: true,
		handler(to,from) {
			if(to.path != from.path){
				this.$router.push(to.path);
			}
		}
	}
}

去掉上面的內容,或者如下

watch: {
	'$route': {
		deep: true,
		handler(to,from) {
			if(to.path != from.path){
				this.$router.push(to);
			}
		}
	}
}

如果沒有太大意義,最好不要在路由監聽裏面執行路由跳轉,很容易會出現死循環,或者跳轉多次情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章