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

vue路由守衛(wèi)易錯點(diǎn)實(shí)戰(zhàn)

 更新時間:2026年05月14日 08:39:38   作者:jialiangzai  
文章主要討論了Vue?Router路由守衛(wèi)中的常見錯誤,包括使用錯誤的守衛(wèi)(beforeEnter與beforeRouteLeave混淆)、錯誤的時機(jī)判斷、忽略守衛(wèi)層級順序、未處理異步邏輯和臟狀態(tài)等問題,并并提供了常見問題例及解決辦法,強(qiáng)調(diào)了要正確理解守衛(wèi)的作用和時機(jī)

路由守衛(wèi)易錯點(diǎn)

1. 把 beforeEnter 和 beforeRouteLeave 用反

  • beforeEnter 是“進(jìn)入某條路由前”的路由級守衛(wèi),適合鑒權(quán)、參數(shù)校驗(yàn)、重定向。
  • beforeRouteLeave 是“離開當(dāng)前組件前”的組件級守衛(wèi),適合彈窗清理、未保存確認(rèn)、資源釋放。
  • 易錯點(diǎn):很多人用 beforeEnter 做離開清理,結(jié)果離開時根本不觸發(fā)。

2. 誤以為 beforeRouteEnter 能直接拿 this

  • beforeRouteEnter 執(zhí)行時組件實(shí)例還沒創(chuàng)建,所以沒有 this
  • 正確用法是 next(vm => { ... }) 在實(shí)例創(chuàng)建后訪問組件。
  • 對比:beforeRouteUpdate、beforeRouteLeave 可以直接用 this,因?yàn)榻M件已存在。

3. 誤判觸發(fā)時機(jī):query/params 改變不一定會銷毀組件

  • 同一路由下只改 query(如 ?tabname=tuan)常常是復(fù)用組件,不會重新創(chuàng)建實(shí)例。
  • 這時通常不會觸發(fā)你期待的“進(jìn)入新頁面”邏輯,應(yīng)該用:
  • watch($route) 或 watch(() => $route.query.xxx)
  • beforeRouteUpdate
  • 易錯點(diǎn):把初始化邏輯只寫在 created,導(dǎo)致切 query 后不刷新數(shù)據(jù)。

4. 忽略守衛(wèi)層級順序?qū)е屡袛嘀貜?fù)或沖突

  • 常見順序理解:全局前置 beforeEach -> 路由獨(dú)享 beforeEnter -> 組件內(nèi) beforeRouteEnter。
  • 易錯點(diǎn):同一鑒權(quán)邏輯在三層都寫,維護(hù)困難且可能互相覆蓋重定向。
  • 建議:全局管“通用規(guī)則”,路由獨(dú)享管“頁面特例”,組件守衛(wèi)管“組件狀態(tài)”。

5. 在守衛(wèi)里忘記放行

  • Vue Router 3 常見問題:調(diào)用了守衛(wèi)卻沒 next(),頁面卡死。
  • Vue Router 4 則常見返回值寫錯(應(yīng)返回 true/false/redirect)。
  • 易錯點(diǎn):分支多時有漏掉的分支沒放行。

6. 異步邏輯沒處理好,造成閃跳或重復(fù)跳轉(zhuǎn)

  • 守衛(wèi)里發(fā)請求要注意異常分支。
  • 易錯點(diǎn):請求失敗后既沒中斷也沒降級,出現(xiàn)空白頁或循環(huán)跳轉(zhuǎn)。
  • 建議:統(tǒng)一兜底,失敗時給明確去向(登錄頁/錯誤頁)。

7. 組件離開清理不徹底,導(dǎo)致“臟狀態(tài)”回流

  • 比如 Vuex 里的彈窗狀態(tài)、篩選條件、臨時編輯數(shù)據(jù)沒清。
  • 你的項(xiàng)目就是典型正確示例:團(tuán)課頁在 beforeRouteLeave 里先關(guān)閉預(yù)約管理彈窗,再 next(),避免切走后狀態(tài)殘留。

8. 誤用 beforeEnter 處理組件內(nèi)部 tab 行為

  • /schedule/index?tabname=tuan 這種通常是同一路由容器內(nèi)切換。
  • beforeEnter 只在進(jìn)入該路由記錄時觸發(fā),不是為組件內(nèi)部 tab 切換設(shè)計(jì)的。
  • 這種場景應(yīng)在組件里處理 query 到狀態(tài)映射,必要時配合 beforeRouteUpdate 或 watcher。

9. 把“權(quán)限控制”和“UI 展示控制”混在一起

  • 權(quán)限控制應(yīng)在守衛(wèi)/路由層(是否允許進(jìn)入)。
  • UI 展示控制應(yīng)在組件層(是否展示按鈕、tab、操作項(xiàng))。
  • 易錯點(diǎn):只隱藏按鈕不做路由校驗(yàn),用戶仍可直接輸 URL 訪問。

10. 不區(qū)分“路由守衛(wèi)”與“生命周期鉤子”

  • 守衛(wèi)解決“是否允許這次導(dǎo)航、導(dǎo)航前后做什么”。
  • 生命周期解決“組件創(chuàng)建/更新/銷毀時做什么”。
  • 易錯點(diǎn):把導(dǎo)航問題放在 mounted 里,導(dǎo)致先渲染后跳轉(zhuǎn),體驗(yàn)差。

實(shí)戰(zhàn)記憶口訣

  • 進(jìn)頁面攔截:beforeEnter / beforeEach
  • 組件創(chuàng)建前:beforeRouteEnter(無 this,用 next(vm=>...)
  • 同組件路由變化:beforeRouteUpdate
  • 離開組件收尾:beforeRouteLeave

路由守衛(wèi)最常見誤區(qū)不是“不會寫”,而是“寫在了錯誤層級和錯誤時機(jī)”。
先判斷你要解決的是“路由進(jìn)入權(quán)限”“組件復(fù)用更新”還是“離開清理”,再選守衛(wèi),問題會少一大半。

到此這篇關(guān)于vue路由守衛(wèi)易錯點(diǎn)的文章就介紹到這了,更多相關(guān)vue路由守衛(wèi)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue中vue-router路由使用示例詳解

    Vue中vue-router路由使用示例詳解

    Vue Router是Vue提供的路由管理器,將組件與路由一一對應(yīng)起來,這種對應(yīng)關(guān)系就路由,這篇文章主要介紹了Vue中vue-router路由使用,需要的朋友可以參考下
    2024-06-06
  • 如何在Vue中使用protobuf

    如何在Vue中使用protobuf

    這篇文章主要介紹了如何在Vue中使用protobuf,protobuf是由google推出的和語言無關(guān)和平臺無關(guān),幾乎支持當(dāng)前的大部分語言,如JavaScript,下文更多相關(guān)介紹需要的小伙伴可以參考一下
    2022-03-03
  • Vue.js實(shí)現(xiàn)點(diǎn)擊左右按鈕圖片切換

    Vue.js實(shí)現(xiàn)點(diǎn)擊左右按鈕圖片切換

    這篇文章主要為大家詳細(xì)介紹了Vue.js實(shí)現(xiàn)點(diǎn)擊左右按鈕圖片切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Vue2利用echarts繪制折線圖,餅圖和大圖

    Vue2利用echarts繪制折線圖,餅圖和大圖

    這篇文章主要為大家詳細(xì)介紹了Vue2如何利用echarts繪制折線圖,餅圖和大圖,文中的示例代碼簡潔易懂,具有一定的借鑒價值,需要的可以參考一下
    2023-04-04
  • vue3組件式彈窗打開的3種方式小結(jié)

    vue3組件式彈窗打開的3種方式小結(jié)

    這篇文章主要給大家介紹了關(guān)于vue3組件式彈窗打開的3種方式,彈窗組件是常見的交互組件,它能夠彈出一些提示信息、提醒用戶進(jìn)行操作等等,需要的朋友可以參考下
    2023-07-07
  • vue+element-ui動態(tài)生成多級表頭的方法

    vue+element-ui動態(tài)生成多級表頭的方法

    今天小編就為大家分享一篇vue+element-ui動態(tài)生成多級表頭的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • vite+vue3+ts項(xiàng)目中提示無法找到模塊的問題及解決

    vite+vue3+ts項(xiàng)目中提示無法找到模塊的問題及解決

    這篇文章主要介紹了vite+vue3+ts項(xiàng)目中提示無法找到模塊的問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Vue3+ElementPlus在el-table表格中顯示時間的示例代碼

    Vue3+ElementPlus在el-table表格中顯示時間的示例代碼

    文章介紹了如何在Vue3+ElementPlus的el-table表格中顯示時間,并提供了相關(guān)的代碼示例,感興趣的朋友一起看看吧
    2025-02-02
  • Vue echarts畫甘特圖流程詳細(xì)講解

    Vue echarts畫甘特圖流程詳細(xì)講解

    這篇文章主要介紹了Vue echarts畫甘特圖流程,甘特圖(Gantt chart)又稱為橫道圖、條狀圖(Bar chart)。其通過條狀圖來顯示項(xiàng)目、進(jìn)度和其他時間相關(guān)的系統(tǒng)進(jìn)展的內(nèi)在關(guān)系隨著時間進(jìn)展的情況
    2022-09-09
  • 前端使用rtsp視頻流接入海康威視攝像頭的具體步驟

    前端使用rtsp視頻流接入海康威視攝像頭的具體步驟

    這篇文章主要介紹了前端使用rtsp視頻流接入??低晹z像頭的具體步驟,前端調(diào)用海康威視攝像頭的過程中,主要涉及到攝像頭的連接、視頻流的獲取以及前端頁面的展示,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-09-09

最新評論

额尔古纳市| 都江堰市| 淮南市| 抚顺市| 洛川县| 台南市| 阿坝县| 象州县| 渭南市| 广水市| 巴林左旗| 昆明市| 东山县| 武定县| 灯塔市| 怀化市| 晴隆县| 阿瓦提县| 南丰县| 拜城县| 江孜县| 高邑县| 五家渠市| 宕昌县| 衡东县| 弥勒县| 沂水县| 肇州县| 涞水县| 巴南区| 灌南县| 永寿县| 拜泉县| 宝兴县| 石家庄市| 吕梁市| 余庆县| 观塘区| 分宜县| 龙州县| 商南县|