最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決Vue路由導(dǎo)航報錯:NavigationDuplicated:?Avoided?redundant?navigation?to?current?location

 更新時間:2023年01月30日 16:48:02   作者:離奇6厘米  
這篇文章主要給大家介紹了關(guān)于解決Vue路由導(dǎo)航報錯:NavigationDuplicated:?Avoided?redundant?navigation?to?current?location的相關(guān)資料,這是最近做項目時候遇到的一個問題,現(xiàn)將解決辦法分享出來,需要的朋友可以參考下

點擊vue路由跳轉(zhuǎn),控制臺報錯:Avoided redundant navigation to current location: “/xxxxxx“解決方法

一、描述問題

在使用this.$router.push跳轉(zhuǎn)頁面時候,重復(fù)點擊菜單引起路由重復(fù)報錯

比如當(dāng)前頁面顯示區(qū)是路由組件‘/cats’,重復(fù)點擊按鈕進(jìn)行this.$router.push跳轉(zhuǎn),要跳轉(zhuǎn)的組件仍然是‘/cats’,那么控制就會報如下錯誤:

二、報錯原因

由于 vue-router3.0 及以上版本回調(diào)形式改成Promise API的形式了,返回的是一個Promise 。也是說 push和replace都是Promise類型了。

而Promise的回調(diào)函數(shù)resolve和reject,必須傳其中一個,否則會報錯。如果路由地址跳轉(zhuǎn)相同,且沒有捕獲到錯誤,控制臺始終會出現(xiàn)上圖所出現(xiàn)的問題。?

三、解決方法

1、安裝vue-router3.0以下版本

先卸載3.0以上版本然后再安裝舊版本

npm i @vue-router2.8.0

2、為每一個Promise添加一個回調(diào)函數(shù)

缺點:每個路由跳轉(zhuǎn)都要添加回調(diào)函數(shù)

this.$router.push({
   name: 'Cats',
 }, () => {})

3、修改VueRouter原型對象上的push/replace方法

在router/index.js文件中添加如下代碼

// 獲取原型對象push函數(shù)
const originalPush = VueRouter.prototype.push

// 獲取原型對象replace函數(shù)
const originalReplace = VueRouter.prototype.replace

// 修改原型對象中的push函數(shù)
VueRouter.prototype.push = function push(location){
return originalPush.call(this , location).catch(err=>err)
}

// 修改原型對象中的replace函數(shù)
VueRouter.prototype.replace = function replace(location){
return originalReplace.call(this , location).catch(err=>err)
}

四、原理分析

const originalReplace = VueRouter.prototype.replace

VueRouter.prototype.replace = function replace(location){
return originalReplace.call(this , location).catch(err=>err)
}

location :一個保存了當(dāng)前要跳轉(zhuǎn)路徑的對象;

call()函數(shù):可以在調(diào)用函數(shù)的同時改變this的指向,常用于實現(xiàn)繼承,

兩個參數(shù):

this:由于call處于原型對象內(nèi)部,所以此處this指向的是當(dāng)前VueRouter的實例對象;而originalPush指向的是VueRouter.prototype.push,旨在于調(diào)用當(dāng)前VueRouter實例對象中的push方法;

location:在方法調(diào)用時傳入獲取到的location。

catch:鏈?zhǔn)秸{(diào)用catch方法,目的是在方法執(zhí)行時,捕獲錯誤。

在js機制中,catch捕獲到Exception時,代碼還會繼續(xù)向下執(zhí)行。所以此處的catch未作任何操作,代碼也會繼續(xù)向下執(zhí)行,和拋給瀏覽器的錯誤其實時一致的

五、額外補充

1、路由導(dǎo)航方式

聲明式編程式
<router-link :to="...">$router.push(...)

編程式導(dǎo)航:即 $router.push、$router.replace、$router.forward()、$router.back()$router.go()

2、Promise函數(shù)

① Promise是一個構(gòu)造函數(shù)

可以使用new 創(chuàng)建一個Promise實例 //eg:const p = new Promise()

每一個Promise實例對象代表一個異步操作

② Promise.prototype上包含一個.then()方法

每一個new Promise()構(gòu)造函數(shù)得到的實例對象都可以通過原型鏈的方式訪問到.then()方法 //eg:p.then()

③ .then()方法用來預(yù)先指定成功或失敗的回調(diào)函數(shù)

p.then(成功回調(diào),失敗回調(diào))

調(diào)用.then()方法時,成功的回調(diào)函數(shù)是必選的,失敗回調(diào)是可選的

?總結(jié)

到此這篇關(guān)于解決Vue路由導(dǎo)航報錯:NavigationDuplicated: Avoided redundant navigation to current location的文章就介紹到這了,更多相關(guān)Vue路由導(dǎo)航報錯NavigationDuplicated內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue-router 組件復(fù)用問題詳解

    vue-router 組件復(fù)用問題詳解

    本篇文章主要介紹了vue-router 組件復(fù)用問題詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Vue源碼中要const _toStr = Object.prototype.toString的原因分析

    Vue源碼中要const _toStr = Object.prototype.toString的原因分析

    這篇文章主要介紹了Vue源碼中要const _toStr = Object.prototype.toString的原因分析,在文中給大家提到了Object.prototype.toString方法的原理,需要的朋友可以參考下
    2018-12-12
  • VueCli3.0中集成MockApi的方法示例

    VueCli3.0中集成MockApi的方法示例

    這篇文章主要介紹了VueCli3.0中集成MockApi的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 安裝@vue/cli 報錯npm WARN deprecated request@2.88.2問題

    安裝@vue/cli 報錯npm WARN deprecated request

    這篇文章主要介紹了安裝@vue/cli 報錯npm WARN deprecated request@2.88.2問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • VUE-PDF實現(xiàn)pdf在線預(yù)覽問題

    VUE-PDF實現(xiàn)pdf在線預(yù)覽問題

    這篇文章主要介紹了VUE-PDF實現(xiàn)pdf在線預(yù)覽問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue Element-ui實現(xiàn)樹形控件節(jié)點添加圖標(biāo)詳解

    Vue Element-ui實現(xiàn)樹形控件節(jié)點添加圖標(biāo)詳解

    這篇文章主要為大家介紹了Element-ui實現(xiàn)樹形控件節(jié)點添加圖標(biāo),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • Vue3+Vue-cli4項目中使用騰訊滑塊驗證碼的方法

    Vue3+Vue-cli4項目中使用騰訊滑塊驗證碼的方法

    這篇文章主要介紹了Vue3+Vue-cli4項目中使用騰訊滑塊驗證碼,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • vue3自定義dialog、modal組件的方法

    vue3自定義dialog、modal組件的方法

    這篇文章主要介紹了vue3自定義dialog、modal組件的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Element修改彈窗類組件的層級的實現(xiàn)

    Element修改彈窗類組件的層級的實現(xiàn)

    本文主要介紹了Element修改彈窗類組件的層級的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue開發(fā)實現(xiàn)評論列表

    vue開發(fā)實現(xiàn)評論列表

    這篇文章主要為大家詳細(xì)介紹了vue開發(fā)實現(xiàn)評論列表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04

最新評論

措美县| 元谋县| 昭苏县| 固原市| 宁波市| 宜宾市| 那坡县| 青川县| 淳化县| 云浮市| 祁阳县| 罗源县| 阿尔山市| 田东县| 马龙县| 隆安县| 铅山县| 桦川县| 昌吉市| 沙田区| 肇庆市| 开鲁县| 四会市| 寻甸| 莱芜市| 桦川县| 桃源县| 凉山| 内江市| 象山县| 汶上县| 增城市| 礼泉县| 鄂托克旗| 云安县| 黄陵县| 嘉峪关市| 石景山区| 乌兰察布市| 奇台县| 调兵山市|