国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue3 中動(dòng)態(tài)添加路由出現(xiàn)的問題 [Vue Router warn]: No match found for location with path “xxx“

這篇具有很好參考價(jià)值的文章主要介紹了vue3 中動(dòng)態(tài)添加路由出現(xiàn)的問題 [Vue Router warn]: No match found for location with path “xxx“。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

引言

最近想嘗試 vue3 + elementplus + axios + pinia 封裝一個(gè)通用的后臺(tái)模板,寫到 vue-router 添加動(dòng)態(tài)路由時(shí),有一個(gè)不影響代碼運(yùn)行但是又有提示的報(bào)錯(cuò),因此進(jìn)行記錄,方便大家進(jìn)行解決

控制臺(tái)提示

vue3 中動(dòng)態(tài)添加路由出現(xiàn)的問題 [Vue Router warn]: No match found for location with path “xxx“,vue,vue.js,前端
圖片圈出的路由是動(dòng)態(tài)加載的路由

解決方案

404等報(bào)錯(cuò)頁面不再需要放在所有路由后面,可在一開始的時(shí)候就定義好報(bào)錯(cuò)跳轉(zhuǎn)的頁面路由。

頁面之所有一開始報(bào)錯(cuò)找不到路由,是因?yàn)閯?dòng)態(tài)加載的路由在 beforeEach 的時(shí)候 to.matched 為空數(shù)組,即此時(shí) next 跳轉(zhuǎn)則會(huì)出現(xiàn)空白頁面,之后使用 addRoute() 時(shí)動(dòng)態(tài)添加的路由已經(jīng)被加載上去,此時(shí) next({ …to, replace: true }) 就跳轉(zhuǎn)成功,所以需要在一開始先定義好 404 頁面,防止路由報(bào)上面圖片的錯(cuò)誤

export const Layout = () => import("@/layout/index.vue");
export const constantRoutes = [
  {
    path: "/",
    redirect: "/dashboard",
    hidden: true,
  },
  {
    path: "/login",
    name: "Login",
    component: () => import("@/views/login/index.vue"),
    hidden: true,
  },
  // 404頁面
  {
    path: "/:pathMatch(.*)*",
    component: () => import("@/views/error/index.vue"),
    hidden: true,
  },
  {
    path: "/dashboard",
    component: Layout,
    redirect: "/dashboard/index",
    hidden: true,
    children: [
      {
        path: "index",
        name: "Dashboard",
        component: () => import("@/views/dashboard/index.vue"),
      },
    ],
  },
];

export default router;
import router, { resetRouter } from './router';
import { getToken } from '@/utils/sessionStorage';
import { usePermissionStore } from '@/store/permission';

// 判斷是否初次或者刷新頁面 0表示初次
let isRequest = 0;

router.beforeEach(async (to, _from, next) => {
  async function init () {
    // 調(diào)用方法獲取路由
    const accessRoutes: any = await usePermissionStore().getGenerateRoutes();
    accessRoutes.forEach((route: any) => {
      router.addRoute(route);
    });
    isRequest = 1;
  }

  // 判斷條件根據(jù)項(xiàng)目更改
  if (getToken()) {
    if (to.path === '/login') {
      next({ path: '/' });
    }
    if (isRequest) {
      next();
    } else {
      await init();
      next({ ...to, replace: true });
    }
  } else {
    sessionStorage.clear();
    isRequest = 0;
    if (to.path === '/login') {
      next();
    } else {
      resetRouter();
      next({ path: '/login' });
    }
  }
});

注意

vue2 中 通常使用 path: " * " 捕獲所有路由,vue3 中不支持 vue2 的寫法,需要用正則來捕獲

1. /:pathMatch(.*)*  
2. /:pathMatch(.*)

上面兩個(gè)的區(qū)別在于 如果省略最后一個(gè)'*'在解析或推送時(shí)將對(duì)params中的'/'字符進(jìn)行編碼

拓展

export const Layout = () => import("@/layout/index.vue");

// vue3 中,當(dāng)有使用到動(dòng)態(tài)加載路由的情況,使用這種方式引入會(huì)出現(xiàn)點(diǎn)擊每個(gè)大導(dǎo)航欄,Layout 重新加載的情況,因此需要改成上面的寫法
import Layout from "@/layout/index.vue";

vue3 中動(dòng)態(tài)添加路由出現(xiàn)的問題 [Vue Router warn]: No match found for location with path “xxx“,vue,vue.js,前端
點(diǎn)擊用戶管理中的任意路由之后,再點(diǎn)擊個(gè)人信息中的任意路由,如果使用上面第二種寫法,就會(huì)出現(xiàn) Layout 頁面組件重新加載!?。?/strong>文章來源地址http://www.zghlxwxcb.cn/news/detail-700261.html

到了這里,關(guān)于vue3 中動(dòng)態(tài)添加路由出現(xiàn)的問題 [Vue Router warn]: No match found for location with path “xxx“的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue3 關(guān)于動(dòng)態(tài)路由刷新出現(xiàn)空白頁最優(yōu)解

    原因:刷新頁面的時(shí)候動(dòng)態(tài)路由會(huì)刷新掉,然后動(dòng)態(tài)路由會(huì)重新加載, 而匹配路由會(huì)在加載路由之前 ,所以會(huì)導(dǎo)致空白頁 解決辦法:遞歸再調(diào)用beforEach,或者直接跳回首頁 在你加載路由的地方 遞歸調(diào)用:next({ …to, replace: true });(慎用,如果你的后臺(tái)管理table是帶標(biāo)簽會(huì)有

    2024年02月15日
    瀏覽(30)
  • 已解決vue-router4路由報(bào)“[Vue Router warn]: No match found for location with path“

    vue-router4動(dòng)態(tài)加載的模式下,當(dāng)我們?cè)诋?dāng)前頁面刷新瀏覽器時(shí),會(huì)出現(xiàn)一個(gè)警告 [Vue Router warn]: No match found for location with path 百度了很久基本上沒解決方案,雖然只是警告但還是看著不爽,這個(gè)原因是刷新頁面時(shí)請(qǐng)求路由為空,因?yàn)樽芳勇酚墒窃赼ddRoute里做的,請(qǐng)求路由比addR

    2024年02月11日
    瀏覽(24)
  • vue3使用vue-router嵌套路由(多級(jí)路由)

    vue3使用vue-router嵌套路由(多級(jí)路由)

    Vue3 嵌套路由的使用和 Vue2 相差不大,主要的區(qū)別是 Vue3 的路由實(shí)例化使用了 createApp() 方法,所以實(shí)例化路由時(shí)需要傳入根組件。另外,Vue3 的路由對(duì)象除了包含 Vue2 中的導(dǎo)航守衛(wèi)、導(dǎo)航鉤子和解析守衛(wèi)等功能外,還新增了 meta prop 和 route prop。 在使用嵌套路由時(shí),建議將路由

    2024年02月03日
    瀏覽(29)
  • Vue3配置路由(vue-router)

    Vue3配置路由(vue-router)

    緊接上篇文章,vue3的配置與vue2是有所差別的,本文就講述了如何配置,如果本文對(duì)你有所幫助請(qǐng)三連支持博主。 下面案例可供參考 使用npm命令進(jìn)行安裝 : npm install vue-router@4 完成后我們打開項(xiàng)目根目錄下的 package.json 文件: 如下即為成功 這里創(chuàng)建 view目錄,然后在view目錄

    2023年04月12日
    瀏覽(27)
  • Vue3 中路由Vue Router 的使用

    Vue3 中路由Vue Router 的使用

    在編寫vue里的SPA(Single Page Application單頁面應(yīng)用)時(shí),我們始終繞不開路由的使用,vue-router4.0版里有一些重要更新,在這里分享給大家。 vue-router是vue.js官方給出的路由解決方案,能夠輕松的管理SPA項(xiàng)目中組件的切換 Vue Router 是 Vue.js 的官方路由。它與 Vue.js 核心深度集成,讓

    2024年02月02日
    瀏覽(15)
  • Vue3的vue-router路由詳解

    Vue3的vue-router路由詳解

    這篇文章是接著【三分鐘快速搭建Vue3+webpack項(xiàng)目】的內(nèi)容做的開發(fā),有基礎(chǔ)的可以跳過?【三分鐘快速搭建Vue3+webpack項(xiàng)目】,直接看以下的內(nèi)容。 Vue3的vue-router路由詳解: 首先安裝路由依賴模塊: 所需代碼文件如下圖: 圖1 ? 所需要的主要文件: index.html、index.js、App.vue in

    2024年02月01日
    瀏覽(21)
  • Vue3/ Vue3內(nèi) Vue-router Vue3路由 完整配置流程

    Vue3/ Vue3內(nèi) Vue-router Vue3路由 完整配置流程

    (1). yarn add vue-router (2) 創(chuàng)建 router/index.js 文件 (3) improt 引入 createRouter improt { createRouter ?}? from \\\'vue-router (4) 調(diào)用 createRouter 并定義變量名 ?cosnt router = createRouter()? (5) export default 導(dǎo)出 router? export default?router? (6) createRouter() 內(nèi)添加對(duì)象 并定義 history ? ?history: createMemoryHistory()

    2023年04月08日
    瀏覽(22)
  • vue3+ts:安裝路由(router)

    vue3+ts:安裝路由(router)

    ? ? ? ?1.安裝vue-router ????????vue3需要安裝4.0以上版本 ????????vue2最好安裝4.0以下版本 ? ? ? ? 安裝命令: ? ? ? ? 安裝完成后,在package.json中查看vue-router是否安裝成功 ? src目錄下新建一個(gè)router文件夾,在router文件夾里新建一個(gè)index.ts文件,代碼如下: main.ts中代碼

    2024年02月06日
    瀏覽(19)
  • Vue Router 路由動(dòng)態(tài)緩存組件

    Vue Router 允許你緩存路由組件,這樣在用戶導(dǎo)航回之前的頁面時(shí),組件的狀態(tài)會(huì)被保留而不是重新渲染。這可以通過使用 keep-alive 組件來實(shí)現(xiàn)。 keep-alive 是一個(gè)內(nèi)置抽象組件,它自身不會(huì)渲染一個(gè) DOM 元素,也不會(huì)出現(xiàn)在父組件鏈中。 它的主要作用是緩存不活動(dòng)的組件實(shí)例,

    2024年04月16日
    瀏覽(52)
  • vue-router addRoute將子路由添加到指定路由下

    router.addRoute可以向vue路由中動(dòng)態(tài)的添加路由信息 但路由存在多層級(jí)關(guān)系 例如 我們最開始的路由是這樣的 例如 我們想在 name為layout的這個(gè)路由下 加一條子路由 就可以寫 addRoute的第一個(gè)參數(shù)接受一個(gè)字符串 就是告訴它要插入到那個(gè)路由 輸入要切入路由的name

    2024年02月15日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包