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

記一次Vue中$route序列號報錯

 更新時間:2023年04月16日 16:58:20   作者:daytoywhy  
本文主要介紹了記一次Vue中$route序列號報錯,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

第一次寫文章,也當(dāng)作工作中遇到問題的一次分享。

由于Vuex在瀏覽器刷新是會丟失數(shù)據(jù),所以我在項目里使用了Vuex持久化存儲的功能,我這邊實現(xiàn)的方案是監(jiān)聽頁面刷新的事件,將Vuex中的數(shù)據(jù)存到sessionStorage中,在頁面初始化的時候再將sessionStorage中的數(shù)據(jù)設(shè)進(jìn)Vuex中,具體代碼如下

create(){
      //在頁面加載時讀取sessionStorage里的狀態(tài)信息
    if (sessionStorage.getItem("store")) {
      this.$store.replaceState(
        Object.assign(
          {},
          this.$store.state,
          JSON.parse(sessionStorage.getItem("store"))
        )
      );
       sessionStorage.removeItem("store");
    }

    //在頁面刷新時將vuex里的信息保存到sessionStorage里
    window.addEventListener("beforeunload", () => {
      sessionStorage.setItem("store", JSON.stringify(this.$store.state));
    });
}

這樣一個簡單的Vuex持久化儲存的功能就實現(xiàn)了,瀏覽器刷新后我們也能讀取到Vuex中儲存的數(shù)據(jù),但是突然有一天,這個功能失效了,頁面也沒有報錯,經(jīng)過我的一番摸索,最終將問題鎖定在了Vuex中儲存的$route對象上

$Route路由對象屬性

$Route對象上有以下這幾個屬性

  • path:字符串,對應(yīng)當(dāng)前路由的路徑,總是解析為絕對路徑,如 "/foo/bar"
  • params:一個 key/value 對象,包含了動態(tài)片段和全匹配片段,如果沒有路由參數(shù),就是一個空對象
  • query:一個 key/value 對象,表示 URL 查詢參數(shù)。例如,對于路徑 /foo?user=1,則有 $route.query.user == 1,如果沒有查詢參數(shù),則是個空對象
  • hash:當(dāng)前路由的 hash 值 (帶 #) ,如果沒有 hash 值,則為空字符串
  • fullPath:完成解析后的 URL,包含查詢參數(shù)和 hash 的完整路徑
  • matched:一個數(shù)組,包含當(dāng)前路由的所有嵌套路徑片段的路由記錄 。路由記錄就是 routes 配置數(shù)組中的對象副本 (還有在 children 數(shù)組)

問題就出在了$route這個路由對象上,我們在頁面刷新時要將Vuex中的數(shù)據(jù)轉(zhuǎn)換成字符串,再進(jìn)行儲存

    //在頁面刷新時將vuex里的信息保存到sessionStorage里
    window.addEventListener("beforeunload", () => {
      sessionStorage.setItem("store", JSON.stringify(this.$store.state));
    });

而store中如果有$route就會報錯,這是因為$route包含了一些非序列話的屬性,例如函數(shù)、循環(huán)引用等;
當(dāng)使用JSON.stringify($route)時,可能會報錯TypeError: Converting circular structure to JSON,這是因為$route對象包含循環(huán)引用,即對象內(nèi)部存在相互引用,導(dǎo)致JSON.stringify()無法序列化這個對象,從而拋出這個錯誤。

解決方法

為了解決這個問題,你可以將$route對象轉(zhuǎn)換成一個新的純JavaScript對象,然后再進(jìn)行序列化??梢允褂?code>Object.assign()方法來實現(xiàn)這一點(diǎn),如下所示:

JSON.stringify(Object.assign({}, $route))

這個方法會創(chuàng)建一個新的JavaScript對象,將$route的屬性復(fù)制到這個新對象中,并返回這個新對象。由于這個新對象只包含純JavaScript數(shù)據(jù),因此可以安全地序列化它。

到此這篇關(guān)于記一次Vue中$route序列號報錯的文章就介紹到這了,更多相關(guān)Vue $route序列號報錯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解vue element plus多語言切換

    詳解vue element plus多語言切換

    這篇文章主要為大家介紹了vue element plus多語言切換,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Vue實現(xiàn)背景更換顏色操作

    Vue實現(xiàn)背景更換顏色操作

    這篇文章主要介紹了Vue實現(xiàn)背景更換顏色操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue+element tabs選項卡分頁效果

    vue+element tabs選項卡分頁效果

    這篇文章主要為大家詳細(xì)介紹了vue+element tabs選項卡分頁效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 詳解Vue.js搭建路由報錯 router.map is not a function

    詳解Vue.js搭建路由報錯 router.map is not a function

    這篇文章主要介紹了詳解Vue.js搭建路由報錯 router.map is not a function,非常具有實用價值,需要的朋友可以參考下
    2017-06-06
  • vue.js輪播圖組件使用方法詳解

    vue.js輪播圖組件使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了vue.js輪播圖組件使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • vue中注冊組件的兩種方式詳解(全局注冊&& 局部注冊)

    vue中注冊組件的兩種方式詳解(全局注冊&& 局部注冊)

    vue 是一個完全支持組件化開發(fā)的框架, 組件之間可以進(jìn)行相互的引用,這篇文章主要介紹了vue中注冊組件的兩種方式詳解(全局注冊&& 局部注冊),需要的朋友可以參考下
    2023-06-06
  • BuildAdmin elementPlus自定義表頭添加tooltip方法示例

    BuildAdmin elementPlus自定義表頭添加tooltip方法示例

    這篇文章主要介紹了BuildAdmin elementPlus 自定義表頭,添加tooltip實現(xiàn)方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 一個Java程序猿眼中的前后端分離以及Vue.js入門(推薦)

    一個Java程序猿眼中的前后端分離以及Vue.js入門(推薦)

    這篇文章主要介紹了前后端分離及Vue.js入門,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • vue深拷貝的3種實現(xiàn)方式小結(jié)

    vue深拷貝的3種實現(xiàn)方式小結(jié)

    當(dāng)使用同一個對象產(chǎn)生沖突時,可以使用lodash包,對該對象進(jìn)行深拷貝,從而使操作的對象為不同的對象,這篇文章主要給大家介紹了關(guān)于vue深拷貝的3種實現(xiàn)方式,需要的朋友可以參考下
    2023-02-02
  • vue3?證件識別上傳組件封裝功能

    vue3?證件識別上傳組件封裝功能

    證件圖片識別上傳根據(jù)業(yè)務(wù)需要,經(jīng)常涉及到證件上傳,例如身份證上傳、銀行卡、營業(yè)執(zhí)照等信息,根據(jù)設(shè)計師的設(shè)計,單獨(dú)封裝了一個上傳組件,這篇文章主要介紹了vue3?證件識別上傳組件封裝,需要的朋友可以參考下
    2023-05-05

最新評論

文昌市| 鸡西市| 遂宁市| 沂水县| 中西区| 宣武区| 揭东县| 连山| 定襄县| 永新县| 景洪市| 会宁县| 张掖市| 青冈县| 平和县| 星子县| 宁国市| 清苑县| 秀山| 新泰市| 阿拉善右旗| 清流县| 临沧市| 洛南县| 上犹县| 广灵县| 漳浦县| 清水县| 禹州市| 凤阳县| 永仁县| 浦东新区| 庄浪县| 河南省| 乐平市| 朔州市| 禄劝| 监利县| 安塞县| 公安县| 三明市|