Menu
official logo 75*75

地瓜大的飛翔旅程

點數旅行 留學 信用卡 程式學習

Menu
Facebook Twitter Feed GitHub LinkedIn YouTube Instagram

Primary Menu

Skip to content
  • 熱門文章目錄 Popular Posts
  • 懶人包 Dummies
    • 二日遊系列 Two-day Trip
    • 機場貴賓室 Airport lounge
    • 飛行體驗 Flight
    • 飛行過夜包 Amenity Kit
    • 英國留學 Study In UK
    • 獎勵機票兌換實戰 Redeem Flight Awards
    • 美國嘉信 CharlesSchwab
    • 美國匯豐 HSBC US
    • 美國德美利 TD Ameritrade
    • 英國匯豐 HSBC UK
    • 香港匯豐 HSBC HK
  • 工程師之路 Learning Programming
  • 關於作者 About
    • Impressum
    • Privacy Policy
Search

Secondary Menu

Skip to content
  • 旅店 Hotel
  • 亞洲 Asia
    • 日本 Japan
    • 台灣 Taiwan
    • 泰國 Thailand
  • 歐洲 Europe
    • 德國 Deutschland
    • 法國 France
    • 匈牙利 Hungary
    • 冰島 Iceland
    • 捷克 Czech Republic
    • 義大利 Italy
    • 西班牙 Spain
    • 英國 United Kingdom
    • 歐洲其他國家 Other European Countries
  • 美洲 America
  • 指南 Guide
    • 語言學習 Language Learning
    • 科技 Technology
    • 投資 Investment
    • 證書 Certificate
  • 食記 Food
  • 雜學 Trivia
    • 日記 Diary
    • 電影 Movie
    • 點數 Points
    • 開箱 Unboxing

[筆記] Vue Router & Vuex 合用解決動態路由和重新整理刷新問題

Posted on2021-11-272021-11-17AuthorANDY LIEN

章節連結
  • 所需套件
  • 重點和邏輯
  • 程式碼
  • 參考資料

Vue 的前端開發專案,若遇上要進行路徑的權限管理,這時候便讓單純的 Vue Router 添增了不少判斷條件和保存當前狀態。這邊筆記下利用 Vue-Router 和 Vuex 來解決動態路由和重新整理刷新問題,同時提點一些要注意的地方。
vue.js logo vue


所需套件

  • Vue 2
  • vuex-persistedstate
  • vue-router

重點和邏輯

1. Vue Router 有額外新增路由的方法 – router.addRoute。router.addRoutes 已經棄用,若你有一個以上的路由要新增,你可以跑 forEach 來解決
2. Vue Router 執行 router.addRoute 時,會中斷現有的 next() 的功能,造成後續的跳轉錯誤。
3. 檢查位置是在 router.beforeEach() 函式中
4. next() 不帶參數時,會解開 hook 往下運行,因此只會執行一次 Navigation Guard
5. next({…}) 有參數,會放棄該次 navigation 進行重新導向 ( redirect )
6. 綜合 3. 和 4. 兩點,你必須要每個路徑無論有無重新導向,最終有個 next() 的出口,否則就跳不出迴圈
7. vuex 內需要儲存當下動態路由頁面的 Object,記得要用 cloneDeep 深拷貝,否則會出現 Reference 錯誤
8. vuex-persistedstate 需要保存 vuex 中動態路由頁面的 Object 所存的變數
9. 當第一次載入頁面 ( 如 Login 頁面,F5 重新載入、新開分頁…等 ),都會重新拉取一次動態路由。

  • 若 vuex 中沒有儲存先前動態路由頁面的內容,或是在同個 Tab 進行切換,那就視同一般頁面跳轉
  • 若 vuex 中有儲存先前動態路由頁面的內容,但採用「新開 Tab」的方式開啟連結,那就以新開分頁中的網址與比對到的動態路由來當作終點,並帶上原有網址列中的參數,再藉由 next({…to, replace:true}) 的方式重新導向。
  • 若使用者重新整理頁面,一樣會透過網址列來比對動態路由來當作終點,再藉由 next({…to, replace:true}) 的方式重新導向

10. 在 Login 頁面觸發跳轉到首頁,不免俗的會發生跳轉到兩次相同頁面的情形 ( 要跳轉到首頁→拉取動態路由載入→藉由 next(‘首頁’) 避免 navigation cancelled error → 再導向一次首頁 )。這樣一來,依照 Vue Router 原先的設定是會報錯的,於是便修改原本 Vue Router 中的 push 方法,將其 error 給隱藏。
11. 當使用者因為沒有登入被自動導到登入頁時,會將之前的網址記錄下來。接著當使用者完成登入,在要載入首頁之前做檢查。如果有先前的網址,那就將 next 的導向做轉換。
12. 當多 Tabs 開啟並在其中一頁執行登出後,由於其他 Tab 狀態不會同步,在每次登入、登出動作後要額外取一個 key 來記錄。當這個 key 為 true 的時候,那麼就在該 tab 執行 logout 動作,並修改原先預設的登入狀態。


程式碼


參考資料

1. vue动态增加路由addRoute
2. vue-router 报错:Navigation cancelled from“/…“ to “/…“ with a new navigation.
3. [Vue] Vue Router 使用 Navigation Guard 加入查詢參數
4. Vue動態路由配置
5. vue router 报错: Uncaught (in promise) NavigationDuplicate{_name: “NavigationDuplicated”} 解决方案

按讚加入粉絲團

延伸閱讀

  • [筆記] 程式必修課!離散數學與演算法 – 95
  • [筆記] Nuxt3 使用錨點導航導致 router meta 資料遺失的替代方案
  • [筆記] Tailwindcss 4 Dark Mode 靜態與動態設值
  • [筆記] 程式必修課!離散數學與演算法 – 88
  • [筆記] 程式必修課!離散數學與演算法 – 86

Categories程式語言 Programming Language, 筆記 Notes, 網頁開發 Web DevelopmentTagspersistence, vue, vue reload page, vue-router, vuex, vuex in router, vuex login, vuex refresh, vuex vue-router

文章導覽

← Previous Previous post: [筆記] 超新手也能用 Python 爬蟲打造貨比千家的比價網站 – 將資料存到資料庫系統中
Next → Next post: [住宿] 台北 林口 機場捷運 A9 站旁 福朋喜來登

Google 站內搜尋

GA4瀏覽人氣

  • 線上人數:2
  • 昨日人氣:707
  • 本月人氣:47,900
  • 上月人氣:28,511
  • 本年人氣:339,495
  • 累積人氣:1,964,458

GA4熱門文章

  • [指南] 國際電話撥打、接聽是否收費?簡易規則講解
    [指南] 國際電話撥打、接聽是否收費?簡易規則講解(瀏覽:56,957)
  • [筆記] 解決 Windows 10 以後版本的中文無法正常輸入 IME 已停用問題
    [筆記] 解決 Windows 10 以後版本的中文無法正常輸入 IME 已停用問題(瀏覽:35,109)
  • [指南] Charles Schwab 嘉信理財 W-8BEN 表格更新 2021
    [指南] Charles Schwab 嘉信理財 W-8BEN 表格更新 2021(瀏覽:11,654)
  • [指南] 台灣麻將 規則整理既介紹
    [指南] 台灣麻將 規則整理既介紹(瀏覽:10,180)
  • [指南] Windows 更改預設顯示器 若選項無法選取該怎麼辦
    [指南] Windows 更改預設顯示器 若選項無法選取該怎麼辦(瀏覽:4,702)
  • [指南] 台灣境內銀行 外幣帳戶轉帳 究竟要不要手續費
    [指南] 台灣境內銀行 外幣帳戶轉帳 究竟要不要手續費(瀏覽:4,626)
  • [指南] 日本實體手機門號 可海外收簡訊 190PadSIM 申請
    [指南] 日本實體手機門號 可海外收簡訊 190PadSIM 申請(瀏覽:4,138)
  • [金融] 日本手機號碼應用之一 – 旅人可申請的 ANA Pay
    [金融] 日本手機號碼應用之一 – 旅人可申請的 ANA Pay(瀏覽:3,844)




Google 熱門關鍵字

  • 在國外接電話要錢嗎(1190/6790/4.4)
  • 國外接電話要錢嗎(723/1783/2.3)
  • 在國外接電話費用(592/2793/4.5)
  • 在國外接電話(590/1731/3.3)
  • 國外接電話(566/2435/4.5)
  • traditional chinese ime is not ready yet解決方法(530/1904/4.7)
  • 人在國外接電話(521/1590/2.7)
  • 國外接電話 費用(440/1411/4.2)
  • 國際電話誰付錢(416/1485/2.6)
  • traditional chinese ime is not ready yet(404/3807/12.6)
  • t card開卡(373/977/2.6)
  • 接國際電話(336/1128/3.2)
  • ana pay 教學(306/2133/6.4)
  • 國際電話 誰付費(294/894/2.4)
  • 接國際電話要錢嗎(290/7064/6.3)
  • 伍拾壹製麵所(284/1318/5.5)
  • 接國外電話要付錢嗎(230/5349/4.7)
  • ime已停用(229/11299/8.2)
  • 接聽國際電話(223/560/1.6)
  • ime is not ready yet解決方法(204/535/3.7)
  • 維珍航空註冊教學(187/384/2.2)
  • 國際電話 誰付錢(175/495/2.4)
  • 嘉信w8ben更新(169/1704/9.0)
  • ana pay(166/4525/9.1)
  • 是否提交此聲明以主張條約利益(165/340/1.8)
  • 電腦突然不能打中文win10(163/5289/8.5)
  • traditional chinese ime is not ready yet 解決(162/423/3.9)
  • ana pay申請教學(161/688/5.4)
  • 國際電話 付費(153/378/2.7)
  • 嘉信 w8ben 更新(149/1311/9.5)

好站推薦

優雅筆寄
網站狂人
嘿!部落!

CC授權標示

創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.

Written-By-Human-Not-By-AI-Badge-white@2x.png

分類

Copyright © 2025 地瓜大的飛翔旅程. All Rights Reserved. 隱私權政策 | Catch Responsive by Catch Themes
  • 熱門文章目錄 Popular Posts
  • 懶人包 Dummies
    • 二日遊系列 Two-day Trip
    • 機場貴賓室 Airport lounge
    • 飛行體驗 Flight
    • 飛行過夜包 Amenity Kit
    • 英國留學 Study In UK
    • 獎勵機票兌換實戰 Redeem Flight Awards
    • 美國嘉信 CharlesSchwab
    • 美國匯豐 HSBC US
    • 美國德美利 TD Ameritrade
    • 英國匯豐 HSBC UK
    • 香港匯豐 HSBC HK
  • 工程師之路 Learning Programming
  • 關於作者 About
    • Impressum
    • Privacy Policy
  • 旅店 Hotel
  • 亞洲 Asia
    • 日本 Japan
    • 台灣 Taiwan
    • 泰國 Thailand
  • 歐洲 Europe
    • 德國 Deutschland
    • 法國 France
    • 匈牙利 Hungary
    • 冰島 Iceland
    • 捷克 Czech Republic
    • 義大利 Italy
    • 西班牙 Spain
    • 英國 United Kingdom
    • 歐洲其他國家 Other European Countries
  • 美洲 America
  • 指南 Guide
    • 語言學習 Language Learning
    • 科技 Technology
    • 投資 Investment
    • 證書 Certificate
  • 食記 Food
  • 雜學 Trivia
    • 日記 Diary
    • 電影 Movie
    • 點數 Points
    • 開箱 Unboxing
  • facebook
  • Instagram
  • 站長嚴選推薦
  • GOTOP
Blogimove部落格搬家技術服務