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

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

 更新時(shí)間:2020年11月24日 08:41:54   作者:讓別人少走彎路  
這篇文章主要介紹了解決vue頁面刷新,數(shù)據(jù)丟失的問題,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下

在做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的官方文檔中有這么一段話:

由此得知計(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)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue.js將unix時(shí)間戳轉(zhuǎn)換為自定義時(shí)間格式

    vue.js將unix時(shí)間戳轉(zhuǎn)換為自定義時(shí)間格式

    這篇文章主要介紹了vue.js將unix時(shí)間戳轉(zhuǎn)換為自定義時(shí)間格式的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 基于axios 解決跨域cookie丟失的問題

    基于axios 解決跨域cookie丟失的問題

    今天小編就為大家分享一篇基于axios 解決跨域cookie丟失的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • Vue組合式API如何正確解構(gòu)props不會(huì)丟失響應(yīng)性

    Vue組合式API如何正確解構(gòu)props不會(huì)丟失響應(yīng)性

    響應(yīng)式?API?賦予了組合式?API?一大坨可能性的同時(shí),代碼精簡,雖然但是,我們應(yīng)該意識(shí)到響應(yīng)性的某些陷阱,比如丟失響應(yīng)性,在本文中,我們將學(xué)習(xí)如何正確解構(gòu)?Vue?組件的?props,使得?props?不會(huì)丟失響應(yīng)性
    2024-01-01
  • vue之父組件向子組件傳值并改變子組件的樣式

    vue之父組件向子組件傳值并改變子組件的樣式

    這篇文章主要介紹了vue之父組件向子組件傳值并改變子組件的樣式,需要的朋友可以參考下
    2022-12-12
  • 教你如何編寫Vue.js的單元測(cè)試的方法

    教你如何編寫Vue.js的單元測(cè)試的方法

    這篇文章主要介紹了教你如何編寫Vue.js的單元測(cè)試的方法,介紹了簡單的單元測(cè)試,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Electron主進(jìn)程(Main?Process)與渲染進(jìn)程(Renderer?Process)通信詳解

    Electron主進(jìn)程(Main?Process)與渲染進(jìn)程(Renderer?Process)通信詳解

    這篇文章主要介紹了Electron主進(jìn)程(Main?Process)與渲染進(jìn)程(Renderer?Process)通信,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • element-ui如何在table中使用tooltip

    element-ui如何在table中使用tooltip

    這篇文章主要介紹了element-ui如何在table中使用tooltip問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue中插槽slot的使用方法

    Vue中插槽slot的使用方法

    插槽就是子組件中的提供給父組件使用的一個(gè)占位符,用<slot></slot> 表示,父組件可以在這個(gè)占位符中填充任何模板代碼,如 HTML、組件等,填充的內(nèi)容會(huì)替換子組件的<slot></slot>標(biāo)簽,這篇文章主要介紹了Vue插槽的理解和使用,需要的朋友可以參考下
    2023-03-03
  • vue3的api解讀之ref和reactive示例詳解

    vue3的api解讀之ref和reactive示例詳解

    這篇文章主要介紹了vue3的api解讀之ref和reactive詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • vue實(shí)現(xiàn)百度搜索功能

    vue實(shí)現(xiàn)百度搜索功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)百度搜索功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09

最新評(píng)論

明溪县| 滕州市| 年辖:市辖区| 上饶县| 贵德县| 河北区| 吉木萨尔县| 邹平县| 巴马| 蒙自县| 遵义市| 扬州市| 崇文区| 抚松县| 安康市| 侯马市| 莱西市| 礼泉县| 永昌县| 横山县| 保德县| 广安市| 安顺市| 从化市| 常熟市| 梨树县| 宣威市| 天长市| 绥德县| 沁水县| 城口县| 灵山县| 三河市| 汝南县| 津市市| 平遥县| 宜章县| 拜城县| 武义县| 铜山县| 蒙城县|