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

Vue.js:Vue-Router動(dòng)態(tài)路由從服務(wù)器接口獲取路由數(shù)據(jù)

這篇具有很好參考價(jià)值的文章主要介紹了Vue.js:Vue-Router動(dòng)態(tài)路由從服務(wù)器接口獲取路由數(shù)據(jù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

文檔

  • https://v3.router.vuejs.org/zh/installation.html

版本號(hào)

"vue": "2.6.10",
"vue-router": "3.6.5",

有幾種方式實(shí)現(xiàn)動(dòng)態(tài)路由:

  1. 前端配置完整路由,通過(guò)接口返回的數(shù)據(jù)判斷是否可顯示,是否可訪問(wèn)
  2. 前端配置部分路由,由后端接口返回的數(shù)據(jù)生成新路由
  3. 拋開(kāi)路由的思維,是否能直接通過(guò)url查詢參數(shù)或者是動(dòng)態(tài)路徑參數(shù)解決問(wèn)題

需求

部分頁(yè)面通過(guò)服務(wù)器端接口返回的參數(shù)判斷是否顯示

用戶可以添加新的分類,分類和路由的顯示方式一致,擁有和路由相同的邏輯,故而采用通過(guò)服務(wù)端返回?cái)?shù)據(jù)生成動(dòng)態(tài)路由的方式解決

實(shí)現(xiàn)思路

1、添加路由

通過(guò)服務(wù)端接口返回的數(shù)據(jù)生成路由,是異步返回的數(shù)據(jù),動(dòng)態(tài)添加

可以通過(guò)Vue-Router提供的api,動(dòng)態(tài)添加路由數(shù)據(jù)

addRoute(parentName: string, route: RouteConfig): () => void

文檔說(shuō):

如果該路由規(guī)則有 name,并且已經(jīng)存在一個(gè)與之相同的名字,則會(huì)覆蓋它。

我想直接覆蓋原有路由,這樣路由位置就不變了

實(shí)際操作的時(shí)候發(fā)現(xiàn):并不會(huì)覆蓋,控制臺(tái)會(huì)提示路由重復(fù)

2、添加時(shí)機(jī)

應(yīng)該在路由跳轉(zhuǎn)之前進(jìn)行

router.beforeEach(async (to, from, next) => {
  // 需要有一個(gè)全局變量記錄是否添加過(guò)
  if (!globalData.hasAddDynamicRoute) {
    await Store.dispatch('router/updateDynamicRoutes')
    globalData.hasAddDynamicRoute = true
  }
})

3、獲取路由配置

該接口獲取的路由數(shù)據(jù)是一維數(shù)組,和路由配置格式不一樣

// 不要使用this.$router.options.routes
getRoutes(): RouteRecord[]

頁(yè)面上顯示的時(shí)候,需要從vuex獲取路由信息,可以及時(shí)刷新頁(yè)面數(shù)據(jù)

4、響應(yīng)式路由

既然是動(dòng)態(tài)路由,所以需要響應(yīng)式,當(dāng)路由數(shù)據(jù)發(fā)生變化時(shí),可以及時(shí)的獲取通知

通過(guò)vuex狀態(tài)管理實(shí)現(xiàn)

// store/modules/router.js

export default {
  namespaced: true,

  state: {
    routes: [],
  },

  getters: {
    // 返回路由數(shù)據(jù)
    getRoutes(state) {
      return state.routes
    }
  },

  mutations: {
    setRoutes(state, routes) {
      state.routes = routes
    },
  },

  actions: {
    async updateDynamicRoutes({ commit }, userinfo) {
      
      // 添加動(dòng)態(tài)路由
      await addDynamicRoutes()

      // 獲取完整的路由信息
      const routes = router.getRoutes()

      commit('setRoutes', routes)
    },
  },
}

5、路由跳轉(zhuǎn)

動(dòng)態(tài)路由首次跳轉(zhuǎn)的時(shí)候,動(dòng)態(tài)路由還沒(méi)有添加,需要轉(zhuǎn)換處理

// 根據(jù) to.name 來(lái)判斷是否為動(dòng)態(tài)路由
if (!to.name) {
    // 當(dāng)前路由是動(dòng)態(tài)的,確定是否存在
    if (router.getRoutes().findIndex((i) => i.path === to.path) !== -1) {
      next({ ...to, replace: true })
    } else {
      next('/')
    }
} else {
    next()
}

6、路由排序

添加的路由只能在最后,無(wú)法指定插入位置

通過(guò)meta元數(shù)據(jù),添加排序字段order_value,可以在顯示的時(shí)候?qū)崿F(xiàn)排序

meta: {
    order_value: 1,
},

7、更新路由

如果數(shù)據(jù)變化,需要更新路由數(shù)據(jù),再次添加同樣會(huì)提示重復(fù)

[vue-router] Duplicate named routes definition

更新前需要先重置路由數(shù)據(jù)

// src/router/index.js

// 路由的創(chuàng)建
function createRouter() {
  return new VueRouter({
    mode: 'history',
    base: process.env.BASE_URL,
    routes,
  })
}

const router = createRouter()

// 重置路由
export function resetRouter() {
  const newRouter = createRouter()

  router.matcher = newRouter.matcher // reset router
}

export default router

問(wèn)題

動(dòng)態(tài)添加的路由,出現(xiàn)空白頁(yè)面問(wèn)題,打印添加后的路由,發(fā)現(xiàn)component參數(shù)是undefined

通過(guò)修改component參數(shù)的配置方式解決文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-712586.html

import Layout from '../views/layout/index.vue'
component: Layout,

// 修改為
component: () => import('../views/layout/index.vue'),

參考文章

  • 手摸手教你實(shí)現(xiàn)vue的動(dòng)態(tài)路由(router.v3.x版本)

到了這里,關(guān)于Vue.js:Vue-Router動(dòng)態(tài)路由從服務(wù)器接口獲取路由數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(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)文章

  • vue-router路由守衛(wèi)

    在我們使用vue-router的時(shí)候,路由守衛(wèi)就像監(jiān)聽(tīng)器、攔截器一樣,幫我們做一些鑒權(quán)等操作,vue中的路由守衛(wèi)分為全局路由守衛(wèi)、獨(dú)享路由守衛(wèi)、組件內(nèi)的路由守衛(wèi) 全局路由守衛(wèi) :?beforeEach、 afterEach 組件獨(dú)享路由守衛(wèi) :beforeEnter、 beforeLeave 組件內(nèi)路由守衛(wèi) :beforeRouteEnter、

    2024年02月11日
    瀏覽(16)
  • 【Vue-Router】路由入門

    【Vue-Router】路由入門

    路由(Routing)是指確定網(wǎng)站或應(yīng)用程序中特定頁(yè)面的方式。在Web開(kāi)發(fā)中,路由用于根據(jù)URL的不同部分來(lái)確定應(yīng)用程序中應(yīng)該顯示哪個(gè)內(nèi)容。 構(gòu)建前端項(xiàng)目 安裝依賴和路由 3. router 使用 login.vue reg.vue index.ts App.vue main.ts router-view 補(bǔ)充: router-view 是Vue Router提供的一個(gè)組件,用于

    2024年02月13日
    瀏覽(28)
  • vue-router路由懶加載

    vue-router路由懶加載

    路由懶加載指的是打包部署時(shí)將資源按照對(duì)應(yīng)的頁(yè)面進(jìn)行劃分,需要的時(shí)候加載對(duì)應(yīng)的頁(yè)面資源,而不是把所有的頁(yè)面資源打包部署到一塊。避免不必要資源加載。(參考vue項(xiàng)目實(shí)現(xiàn)路由按需加載(路由懶加載)的3種方式_小胖梅的博客-CSDN博客_vue懶加載?) 這里有三種方式可以

    2023年04月08日
    瀏覽(20)
  • vue-router(路由)詳細(xì)教程

    路由是一個(gè)比較廣義和抽象的概念,路由的本質(zhì)就是 對(duì)應(yīng)關(guān)系 。 在開(kāi)發(fā)中,路由分為: ? 后端路由 ? 前端路由 后端路由 概念:根據(jù)不同的用戶 URL 請(qǐng)求,返回不同的內(nèi)容 本質(zhì):URL 請(qǐng)求地址與服務(wù)器資源之間的對(duì)應(yīng)關(guān)系 [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將

    2024年02月04日
    瀏覽(21)
  • vue-router路由模式詳解

    vue-router路由模式詳解

    目錄 一. vue-router(前端路由)有兩種模式,hash模式和history模式 二、路由模式解析 三、兩種模式的區(qū)別 1、hash模式 ?2、history路由 (3)popstate實(shí)現(xiàn)history路由攔截,監(jiān)聽(tīng)頁(yè)面返回事件 一. vue-router(前端路由)有兩種模式,hash模式和history模式 1.hash 就是指 url 后面的 # 號(hào)以及后

    2024年02月03日
    瀏覽(33)
  • 【Vue-Router】路由傳參

    【Vue-Router】路由傳參

    list.json login.vue reg.vue App.vue index.ts reg.vue item?.name ,item?.price ,item?.id ,他們?nèi)绻皇褂每蛇x鏈操作符會(huì)出現(xiàn)報(bào)錯(cuò): \\\'__VLS_ctx.item\\\' is possibly \\\'undefined\\\'. login.vue 注意: 傳遞 params 參數(shù)時(shí),若使用 to 的對(duì)象寫法,必須使用 name 配置項(xiàng),不能用 path 。 傳遞 params 參數(shù)時(shí),需要提前在規(guī)

    2024年02月13日
    瀏覽(19)
  • 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 完成后我們打開(kāi)項(xiàng)目根目錄下的 package.json 文件: 如下即為成功 這里創(chuàng)建 view目錄,然后在view目錄

    2023年04月12日
    瀏覽(27)
  • 路由,vue-router的基本用法,vue-router的常見(jiàn)用法$route.params、$router.push、$router.replace、$router.go

    路由,vue-router的基本用法,vue-router的常見(jiàn)用法$route.params、$router.push、$router.replace、$router.go

    路由(英文: router)就是 對(duì)應(yīng)關(guān)系 。 SPA指的是一個(gè)web網(wǎng)站只有唯一的一個(gè)HTML頁(yè)面, 所有組件的展示與切換 都在這唯一的一個(gè)頁(yè)面內(nèi)完成。此時(shí), 不同組件之間的切換 需要通過(guò) 前端路由 來(lái)實(shí)現(xiàn)。 *結(jié)論:*在SPA項(xiàng)目中, 不同功能之間的切換 ,要 依賴于前端路由 來(lái)完成! 通俗

    2024年01月16日
    瀏覽(27)
  • Vue3的vue-router路由詳解

    Vue3的vue-router路由詳解

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

    2024年02月01日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包