亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

記一次Vue中$route序列號(hào)報(bào)錯(cuò)

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

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

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

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

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

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

$Route路由對(duì)象屬性

$Route對(duì)象上有以下這幾個(gè)屬性

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

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

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

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

解決方法

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

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

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

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

相關(guān)文章

  • Vue極簡(jiǎn)生成器?Vuepress的實(shí)現(xiàn)

    Vue極簡(jiǎn)生成器?Vuepress的實(shí)現(xiàn)

    本文主要介紹了Vue極簡(jiǎn)生成器?Vuepress的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2022-06-06
  • 關(guān)于vue 項(xiàng)目中瀏覽器跨域的配置問(wèn)題

    關(guān)于vue 項(xiàng)目中瀏覽器跨域的配置問(wèn)題

    這篇文章主要介紹了vue 項(xiàng)目中瀏覽器跨域的配置問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • vue實(shí)現(xiàn)簡(jiǎn)單的登錄彈出框

    vue實(shí)現(xiàn)簡(jiǎn)單的登錄彈出框

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)簡(jiǎn)單的登錄彈出框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Vue 框架之鍵盤(pán)事件、健值修飾符、雙向數(shù)據(jù)綁定

    Vue 框架之鍵盤(pán)事件、健值修飾符、雙向數(shù)據(jù)綁定

    這篇文章主要介紹了Vue 框架之鍵盤(pán)事件、健值修飾符、雙向數(shù)據(jù)綁定問(wèn)題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • Vue全局變量的定義及使用方法

    Vue全局變量的定義及使用方法

    這篇文章主要給大家介紹了關(guān)于Vue全局變量的定義及使用的相關(guān)資料,定義完全局變量后,我們可以在程序中的任何地方使用它們,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • Vue3+Element?Plus實(shí)現(xiàn)el-table跨行顯示(非腳手架)

    Vue3+Element?Plus實(shí)現(xiàn)el-table跨行顯示(非腳手架)

    這篇文章主要介紹了Vue3+Element Plus實(shí)現(xiàn)el-table跨行顯示(非腳手架),本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • vue任意關(guān)系組件通信與跨組件監(jiān)聽(tīng)狀態(tài)vue-communication

    vue任意關(guān)系組件通信與跨組件監(jiān)聽(tīng)狀態(tài)vue-communication

    這篇文章主要介紹了vue任意關(guān)系組件通信與跨組件監(jiān)聽(tīng)狀態(tài)vue-communication,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • vue.set向?qū)ο罄镌黾佣鄬訑?shù)組屬性不生效問(wèn)題及解決

    vue.set向?qū)ο罄镌黾佣鄬訑?shù)組屬性不生效問(wèn)題及解決

    這篇文章主要介紹了vue.set向?qū)ο罄镌黾佣鄬訑?shù)組屬性不生效問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • VUE重點(diǎn)問(wèn)題總結(jié)

    VUE重點(diǎn)問(wèn)題總結(jié)

    本篇內(nèi)容給大家總結(jié)了VUE的重要難點(diǎn),并把代碼做了詳細(xì)分享,有興趣的朋友參考學(xué)習(xí)下。
    2018-03-03
  • Vue自定義多選組件使用詳解

    Vue自定義多選組件使用詳解

    這篇文章主要為大家詳細(xì)介紹了Vue自定義多選組件的使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09

最新評(píng)論