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

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

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

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

1. 把 beforeEnter 和 beforeRouteLeave 用反

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

2. 誤以為 beforeRouteEnter 能直接拿 this

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相關(guān)文章

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

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

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

    如何在Vue中使用protobuf

    這篇文章主要介紹了如何在Vue中使用protobuf,protobuf是由google推出的和語(yǔ)言無(wú)關(guān)和平臺(tái)無(wú)關(guān),幾乎支持當(dāng)前的大部分語(yǔ)言,如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ì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Vue2利用echarts繪制折線圖,餅圖和大圖

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論

锡林浩特市| 乐安县| 高碑店市| 确山县| 康乐县| 郓城县| 贵南县| 绥中县| 周宁县| 随州市| 丘北县| 益阳市| 修文县| 廉江市| 昭觉县| 监利县| 乌恰县| 闵行区| 旬邑县| 三原县| 永福县| 汝城县| 阿拉善盟| 宜兰县| 安庆市| 长武县| 阳谷县| 章丘市| 五峰| 怀柔区| 新宁县| 安溪县| 墨竹工卡县| 安平县| 乐都县| 谷城县| 科尔| 和政县| 承德县| 孟州市| 根河市|