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

vuex頁(yè)面刷新數(shù)據(jù)丟失解決方法詳解

 更新時(shí)間:2023年07月14日 09:35:09   作者:醉前端  
這篇文章主要為大家介紹了vuex頁(yè)面刷新數(shù)據(jù)丟失解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

原因

在vue項(xiàng)目中用vuex來(lái)做全局的狀態(tài)管理, 發(fā)現(xiàn)當(dāng)刷新網(wǎng)頁(yè)后,保存在vuex實(shí)例store里的數(shù)據(jù)會(huì)丟失。

因?yàn)閟tore里的數(shù)據(jù)是保存在運(yùn)行內(nèi)存中的,當(dāng)頁(yè)面刷新時(shí),頁(yè)面會(huì)重新加載vue實(shí)例,store里面的數(shù)據(jù)就會(huì)被重新賦值初始化

解決思路

將state的數(shù)據(jù)保存在localstorage、sessionstorage或cookie中(三者的區(qū)別),這樣即可保證頁(yè)面刷新數(shù)據(jù)不丟失且易于讀取。

  • localStorage: localStorage的生命周期是永久的,關(guān)閉頁(yè)面或?yàn)g覽器之后localStorage中的數(shù)據(jù)也不會(huì)消失。localStorage除非主動(dòng)刪除數(shù)據(jù),否則數(shù)據(jù)永遠(yuǎn)不會(huì)消失。
  • sessionStorage:sessionStorage的生命周期是在僅在當(dāng)前會(huì)話(huà)下有效。sessionStorage引入了一個(gè)“瀏覽器窗口”的概念,sessionStorage是在同源的窗口中始終存在的數(shù)據(jù)。只要這個(gè)瀏覽器窗口沒(méi)有關(guān)閉,即使刷新頁(yè)面或者進(jìn)入同源另一個(gè)頁(yè)面,數(shù)據(jù)依然存在。但是sessionStorage在關(guān)閉了瀏覽器窗口后就會(huì)被銷(xiāo)毀。同時(shí)獨(dú)立的打開(kāi)同一個(gè)窗口同一個(gè)頁(yè)面,sessionStorage也是不一樣的。
  • cookie:cookie生命期為只在設(shè)置的cookie過(guò)期時(shí)間之前一直有效,即使窗口或?yàn)g覽器關(guān)閉。 存放數(shù)據(jù)大小為4K左右,有個(gè)數(shù)限制(各瀏覽器不同),一般不能超過(guò)20個(gè)。缺點(diǎn)是不能儲(chǔ)存大數(shù)據(jù)且不易讀取。

由于vue是單頁(yè)面應(yīng)用,操作都是在一個(gè)頁(yè)面跳轉(zhuǎn)路由,因此sessionStorage較為合適,原因如下:

  • sessionStorage可以保證打開(kāi)頁(yè)面時(shí)sessionStorage的數(shù)據(jù)為空;
  • 每次打開(kāi)頁(yè)面localStorage存儲(chǔ)著上一次打開(kāi)頁(yè)面的數(shù)據(jù),因此需要清空之前的數(shù)據(jù)。

vuex中state數(shù)據(jù)的修改必須通過(guò)mutation方法進(jìn)行修改,因此mutation修改state的同時(shí)需要修改sessionstorage,問(wèn)題倒是可以解決但是感覺(jué)很麻煩,state中有很多數(shù)據(jù),很多mutation修改state就要很多次sessionstorage進(jìn)行修改,既然如此直接用sessionstorage解決不就行了,為何還要用vuex多此一舉呢?
vuex的數(shù)據(jù)在每次頁(yè)面刷新時(shí)丟失,是否可以在頁(yè)面刷新前再將數(shù)據(jù)存儲(chǔ)到sessionstorage中呢,是可以的,beforeunload事件可以在頁(yè)面刷新前觸發(fā),但是在每個(gè)頁(yè)面中監(jiān)聽(tīng)beforeunload事件感覺(jué)也不太合適,那么最好的監(jiān)聽(tīng)該事件的地方就在app.vue中。

  • 在app.vue的created方法中讀取sessionstorage中的數(shù)據(jù)存儲(chǔ)在store中,此時(shí)用vuex.store的replaceState方法,替換store的根狀態(tài)
  • 在beforeunload方法中將store.state存儲(chǔ)到sessionstorage中。

代碼如下

export default {
  name: 'App',
  created () {
    //在頁(yè)面加載時(shí)讀取sessionStorage里的狀態(tài)信息
    if (sessionStorage.getItem("store") ) {
        this.$store.replaceState(Object.assign({}, this.$store.state,JSON.parse(sessionStorage.getItem("store"))))
    } 
    //在頁(yè)面刷新時(shí)將vuex里的信息保存到sessionStorage里
    window.addEventListener("beforeunload",()=>{
        sessionStorage.setItem("store",JSON.stringify(this.$store.state))
    })
  }
}

以上就是vuex頁(yè)面刷新數(shù)據(jù)丟失解決方法詳解的詳細(xì)內(nèi)容,更多關(guān)于vuex頁(yè)面刷新數(shù)據(jù)丟失解決的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue中使用SVG-ICON的配置方法

    Vue中使用SVG-ICON的配置方法

    在項(xiàng)目開(kāi)發(fā)中,經(jīng)常會(huì)用到svg圖標(biāo),之前用的都是vue-svg-icon,接下來(lái)通過(guò)本文給大家介紹Vue中使用SVG-ICON的配置方法,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • 快速解決vue-cli在ie9+中無(wú)效的問(wèn)題

    快速解決vue-cli在ie9+中無(wú)效的問(wèn)題

    今天小編就為大家分享一篇快速解決vue-cli在ie9+中無(wú)效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • ElementUi中select框在頁(yè)面滾動(dòng)時(shí)el-option超出元素區(qū)域的問(wèn)題解決

    ElementUi中select框在頁(yè)面滾動(dòng)時(shí)el-option超出元素區(qū)域的問(wèn)題解決

    本文主要介紹了ElementUi中select框在頁(yè)面滾動(dòng)時(shí)el-option超出元素區(qū)域的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • Vue3和Vue2的響應(yīng)式原理

    Vue3和Vue2的響應(yīng)式原理

    這篇文章我們將探討Vue3框架的優(yōu)秀特性、使用原理、周邊生態(tài)和實(shí)戰(zhàn)應(yīng)用,系統(tǒng)的學(xué)習(xí)Vue生態(tài)體系,希望和大家共同成長(zhǎng),我們一起探討下Vue3和Vue2的響應(yīng)式原理,那究竟什么是“響應(yīng)式”,接下來(lái)跟著小編一起來(lái)學(xué)習(xí)吧
    2023-05-05
  • Vue路由懶加載與組件懶加載示例詳解

    Vue路由懶加載與組件懶加載示例詳解

    懶加載也稱(chēng)為延遲加載,是一種將資源(如圖片、組件、代碼等)推遲到需要的時(shí)候再加載的策略,這篇文章主要介紹了Vue路由懶加載與組件懶加載的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-03-03
  • vue3使用Vite打包組件庫(kù)從0搭建過(guò)程詳解

    vue3使用Vite打包組件庫(kù)從0搭建過(guò)程詳解

    這篇文章主要為大家介紹了vue3使用Vite打包組件庫(kù)從0搭建過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Vue在echarts?tooltip中添加點(diǎn)擊事件案例詳解

    Vue在echarts?tooltip中添加點(diǎn)擊事件案例詳解

    本文主要介紹了Vue項(xiàng)目中在echarts?tooltip添加點(diǎn)擊事件的案例詳解,代碼具有一定的價(jià)值,感興趣的小伙伴可以來(lái)學(xué)習(xí)一下
    2021-11-11
  • 基于vue和websocket的多人在線(xiàn)聊天室

    基于vue和websocket的多人在線(xiàn)聊天室

    這篇文章主要介紹了基于vue和websocket的多人在線(xiàn)聊天室,需要的朋友可以參考下
    2020-02-02
  • vue3 provide和inject底層組件的值不是響應(yīng)式的處理詳解

    vue3 provide和inject底層組件的值不是響應(yīng)式的處理詳解

    這篇文章主要為大家介紹了vue3 provide和inject底層組件的值不是響應(yīng)式的處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • vue3生命周期原理與生命周期函數(shù)簡(jiǎn)單應(yīng)用實(shí)例分析

    vue3生命周期原理與生命周期函數(shù)簡(jiǎn)單應(yīng)用實(shí)例分析

    這篇文章主要介紹了vue3生命周期原理與生命周期函數(shù),結(jié)合簡(jiǎn)單實(shí)例形式分析了vue3的生命周期基本原理、以及各個(gè)階段的生命周期鉤子函數(shù)功能、使用技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2023-04-04

最新評(píng)論

太原市| 富锦市| 罗平县| 沈丘县| 酉阳| 环江| 尉犁县| 大连市| 石柱| 石河子市| 卢湾区| 呼和浩特市| 临邑县| 定日县| 尼木县| 上饶县| 鄂州市| 南昌市| 舞阳县| 彭水| 米泉市| 蒲城县| 武汉市| 股票| 察隅县| 龙泉市| 分宜县| 马边| 临泉县| 特克斯县| 金川县| 永清县| 筠连县| 桃园县| 安陆市| 敦煌市| 东辽县| 阳江市| 库尔勒市| 菏泽市| 蓝田县|