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

vue路由警告:Duplicate named routes definition問題

 更新時間:2022年09月20日 10:03:01   作者:白日有夢  
這篇文章主要介紹了vue路由警告:Duplicate named routes definition問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

今天在開發(fā)的時候,項目報了一個警告  Duplicate named routes definition ,這里記錄一下解決方式和思路。

警告產(chǎn)生的原因

根據(jù)提示內(nèi)容,我們大概猜測是和路由的name有關(guān),上網(wǎng)了解了一下,驗證了我們的猜測是正確的。警告是由于路由的name 重復導致的。(原理?who care (艸皿艸 ))

錯誤類型

雖然我們已經(jīng)知道警告是由于name重復導致,其實細分一下還是有點不一樣的。

一是靜態(tài)路由中的name重復,一是動態(tài)路由的name 重復

舉例說明

靜態(tài)路由

錯誤demo:

{
    path: '/storage-pool',
    name: 'storagePool',   // name 1
    component: Layout,
    children: [
      {
        path: 'drag-table',
        name: 'DragTable', // name 2
        meta: { title:'' },
        component: () => import('@/views/storage-pool/storage-pool/index')
      }
    ]
  },
{
    path: '/pool',
    name: 'storagePool', // name 3
    component: Layout,
    children: [
      {
        path: 'drag-table',
        name: 'DragTable2', // name 4
        meta: { title: ''},
        component: () => import('@/views/storage-pool/storage-pool/index')
      }
    ]
  },

以上demo 包括子路由一共有4個name值,其中name1 和name3 是重復的。這樣就會產(chǎn)生Duplicate named routes definition 的警告了。

解決方式:

靜態(tài)路由的解決方式很簡單,只要調(diào)整一下name,使所有name 不重復即可.

例如,將以上的name 分別設置為name : 'storagePool' , name: 'DragTable', name: 'storagePool2', name: 'DragTable2'

動態(tài)路由

這里重點要說的是動態(tài)路由。動態(tài)路由一般來說是通過后端接口返回拿到數(shù)據(jù),然后在路由守衛(wèi)router.beforeEach 中進行添加。

錯誤Demo:

router.beforeEach(async(to, from, next) => {
  if (to.name === 'storageNew') {
    getAside().then(res => {
      router.options.routes = res 
      router.addRoutes(router.options.routes)
      next()
    })
  } else {
    next()
  }
})

以上demo 運行也會出現(xiàn)警告 Duplicate named routes definition,這里的重點是方法 addRoutes,因為: addRoutes 方法僅僅是幫你注入新的路由,并沒有幫你剔除其它路由。

解決方式:

這里我們使用addRoutes之前,將新的路由記錄傳遞給matcher。即:router.matcher = new Router().matcher

放在一起就是

。。。
router.options.routes = res
router.matcher = new Router().matcher //match
router.addRoutes(router.options.routes)

刷新頁面會發(fā)現(xiàn)警告已經(jīng)消失了。

但是

頁面初始化的警告消失了,在點擊動態(tài)路由的時候會發(fā)現(xiàn),還是會出現(xiàn)警告。檢查一下代碼發(fā)現(xiàn),我們每次頁面跳轉(zhuǎn)的時候,在router.beforeEach 里都會請求一次地址getAside ,重新使用方法addRoutes。

那么讓請求只執(zhí)行一次,會不會就解決問題了尼?

這里我使用了localStorage,頁面初始化設置localStorage 為0,在第一次請求拿到動態(tài)地址之后存儲一下狀態(tài)為1,之后由于是單頁面不會刷新頁面,那么只要在beforeEach添加判斷就可以了。

完整代碼:

window.localStorage.setItem('storageAside', '0')
router.beforeEach(async(to, from, next) => {
  if (to.name === 'storageNew' && window.localStorage.getItem('storageAside') === '0') {
    getAside().then(res => {
      window.localStorage.setItem('storageAside', '1')
      router.options.routes = res
      router.matcher = new Router().matcher
      router.addRoutes(router.options.routes)
      next()
    })
  } else {
    next()
  }
})

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • vue、react等單頁面項目應該這樣子部署到服務器

    vue、react等單頁面項目應該這樣子部署到服務器

    這篇文章主要介紹了vue、react等單頁面項目應該這樣子部署到服務器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • vue3+ts中ref與reactive指定類型實現(xiàn)示例

    vue3+ts中ref與reactive指定類型實現(xiàn)示例

    這篇文章主要為大家介紹了vue3+ts中ref及reactive如何指定類型的實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 如何解決ECharts圖表切換后縮成一團的問題

    如何解決ECharts圖表切換后縮成一團的問題

    這篇文章主要介紹了如何解決ECharts圖表切換后縮成一團的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue3父子通訊方式及Vue3插槽的使用方法詳解

    Vue3父子通訊方式及Vue3插槽的使用方法詳解

    這篇文章主要介紹了Vue3父子通訊方式及Vue3插槽的使用方法詳解,需要的朋友可以參考下
    2023-01-01
  • vue頁面更新patch的實現(xiàn)示例

    vue頁面更新patch的實現(xiàn)示例

    這篇文章主要介紹了vue頁面更新patch的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Vue中Mixin的正確用法詳解

    Vue中Mixin的正確用法詳解

    眾所周知,vue 的 mixins 是個非常靈活,但又很容易帶來混亂的 API,Mixins 本該是一種強大的重用代碼的手段,但使用之后往往帶來更多的混亂,代碼變得不易維護,本文就詳細介紹Vue Mixin的正確用法,需要的朋友可以參考下
    2023-06-06
  • Vue前端整合Element?Ui的教程詳解

    Vue前端整合Element?Ui的教程詳解

    這篇文章主要介紹了Vue前端整合Element?Ui,本節(jié)內(nèi)容服務于SpringBoot?+?Vue?搭建?JavaWeb?增刪改查項目,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • vue中動態(tài)修改img標簽中src的方法實踐

    vue中動態(tài)修改img標簽中src的方法實踐

    本文主要介紹了vue中動態(tài)修改img標簽中src的方法實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Vue3中使用vuedraggable拖拽實戰(zhàn)教程

    Vue3中使用vuedraggable拖拽實戰(zhàn)教程

    這篇文章主要介紹了Vue3中使用vuedraggable拖拽實戰(zhàn)教程,文中通過示例介紹了vue3拖拽組件vuedraggable的使用demo,需要的朋友可以參考下
    2023-06-06
  • 關(guān)于element-ui中@selection-change執(zhí)行兩次的問題

    關(guān)于element-ui中@selection-change執(zhí)行兩次的問題

    這篇文章主要介紹了關(guān)于element-ui中@selection-change執(zhí)行兩次的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評論

四子王旗| 衡阳县| 兖州市| 鲜城| 关岭| 桂东县| 白山市| 宾阳县| 衡阳市| 浦北县| 务川| 定襄县| 沁水县| 讷河市| 柳河县| 西青区| 土默特右旗| 达尔| 商城县| 惠州市| 山阳县| 岑巩县| 东阳市| 泊头市| 丹巴县| 鹰潭市| 辉南县| 汝城县| 莒南县| 电白县| 新平| 南投县| 小金县| 娄烦县| 江西省| 长兴县| 潞西市| 石首市| 陕西省| 巩留县| 柳河县|