成人视屏在线观看-国产99精品-国产精品1区2区-欧美一级在线观看-国产一区二区日韩-色九九九

您的位置:首頁技術(shù)文章
文章詳情頁

解決vue頁面刷新,數(shù)據(jù)丟失的問題

瀏覽:92日期:2022-10-24 10:46:03

在做vue項(xiàng)目的過程中有時(shí)候會(huì)遇到一個(gè)問題,就是進(jìn)行F5頁面刷新的時(shí)候,頁面的數(shù)據(jù)會(huì)丟失,出現(xiàn)這個(gè)問題的原因是因?yàn)楫?dāng)用vuex做全局狀態(tài)管理的時(shí)候,store中的數(shù)據(jù)是保存在運(yùn)行內(nèi)存中的,頁面刷新時(shí)會(huì)重新加載vue實(shí)例,store中的數(shù)據(jù)就會(huì)被重新賦值,因此數(shù)據(jù)就丟失了,解決方式如下:

解決方法一:

最先想到的應(yīng)該就是利用localStorage/sessionStorage將數(shù)據(jù)儲(chǔ)存在外部,做一個(gè)持久化儲(chǔ)存,下面是利用localStorage存儲(chǔ)的具體方案:

方案一:由于state中的數(shù)據(jù)是響應(yīng)式的,而數(shù)據(jù)又是通過mutation來進(jìn)行修改,故在通過mutation修改state中數(shù)據(jù)的同時(shí)調(diào)用localStorage.setItem()方法來進(jìn)行數(shù)據(jù)的存儲(chǔ)。

import Vue from ’vue’;import Vuex from ’vuex’;Vue.use(Vuex);export default new Vuex.Store({ state: { orderList: [], menuList: [] }, mutations: { orderList(s, d) { s.orderList= d; window.localStorage.setItem('list',JSON.stringify(s.orderList)) }, menuList(s, d) { s.menuList = d; window.localStorage.setItem('list',JSON.stringify(s.menuList)) }, }})

在頁面加載的時(shí)候再通過localStorage.getItem()將數(shù)據(jù)取出放回到vuex,可在app.vue的created()周期函數(shù)中寫如下代碼:

if (window.localStorage.getItem('list') ) { this.$store.replaceState(Object.assign({}, this.$store.state,JSON.parse(window.localStorage.getItem('list'))))}

方案二:方案一能夠順利解決問題,但不斷觸發(fā)localStorage.setItem()方法對(duì)性能不是特別友好,而且一直將數(shù)據(jù)同步到localStorage中似乎就沒必要再用vuex做狀態(tài)管理,直接用localStorage即可,于是對(duì)以上解決方法進(jìn)行了改進(jìn),通過監(jiān)聽beforeunload事件來進(jìn)行數(shù)據(jù)的localStorage存儲(chǔ),beforeunload事件在頁面刷新時(shí)進(jìn)行觸發(fā),具體做法是在App.vue的created()周期函數(shù)中下如下代碼:

if (window.localStorage.getItem('list') ) { this.$store.replaceState(Object.assign({}, this.$store.state,JSON.parse(window.localStorage.getItem('list')))) } window.addEventListener('beforeunload',()=>{ window.localStorage.setItem('list',JSON.stringify(this.$store.state)) })

解決方法二(推薦):

這個(gè)方法是基于對(duì)computed計(jì)算屬性的理解,在vue的官方文檔中有這么一段話:

解決vue頁面刷新,數(shù)據(jù)丟失的問題

由此得知計(jì)算屬性的結(jié)果會(huì)被緩存,也就是說在有緩存的情況下,computed會(huì)優(yōu)先使用緩存,于是也可以在state數(shù)據(jù)相對(duì)應(yīng)的頁面這樣寫:

computed:{ orderList() { return this.$store.state.orderList }}

以上就是解決vue頁面刷新,數(shù)據(jù)丟失的問題的詳細(xì)內(nèi)容,更多關(guān)于vue頁面刷新,數(shù)據(jù)丟失的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Vue
主站蜘蛛池模板: 色天天躁夜夜躁天干天干 | 国产深夜福利在线观看网站 | 日本一级毛片高清免费观看视频 | 亚洲成a| 精品久久久久久久九九九精品 | 看片日韩 | 国产精品成久久久久三级 | 99久久精品无码一区二区毛片 | 欧美在线视频一区二区 | 成人69视频在线观看免费 | 国产毛片久久精品 | 99视频在线观看视频一区 | 国产亚洲精品午夜高清影院 | 亚洲毛片在线观看 | 视频一区色眯眯视频在线 | 中国大陆一级毛片 | 亚洲在线观看网站 | 中文字幕在线观看国产 | 亚洲图片偷拍自拍 | 丁香五香天堂 | 欧美另类videosbestsex视频 | 国产亚洲一区二区三区 | 色综合美国色农夫网 | 久久久精品免费视频 | 成年女人毛片免费观看97 | 男人桶女人暴爽的视频 | 91精品国产手机 | 性欧美视频a毛片在线播放 性欧美一级 | 国产亚洲人成a在线v网站 | 韩国一大片a毛片 | 国产精品午夜国产小视频 | 九九久久九九久久 | 一级视频在线免费观看 | 精品国产高清久久久久久小说 | 久久精视频 | 国产特黄特色一级特色大片 | 国产国语一级毛片全部 | 全部孕妇毛片丰满孕妇孕交 | 男女免费观看视频 | 国产三级a三级三级 | 日本阿v视频在线观看高清 日本波多野结衣视频 |