vuex重新整理資料消失問題

2021-08-27 05:14:41 字數 1941 閱讀 2474

vue構建的單頁大型專案中,可能會用到vuex 。vuex 的狀態儲存是響應式的,當 vue 元件從 store 中讀取狀態的時候,若 store 中的狀態發生變化,那麼相應的元件也會相應地得到高效更新。但是有乙個問題就是:vuex的儲存的資料只是在頁面的中,相當於我們定義的全域性變數,重新整理之後,裡邊的資料就會恢復到初始化狀態。但是這個情況有時候並不是我們所希望的。比如,使用者已經登入了,我把登入狀態放到state中了,一重新整理頁面,還要重新登入?購物車裡的新增的資料,一重新整理要重新新增?

監聽頁面是否重新整理,如果頁面重新整理了,將state物件存入到sessionstorage/localstorage中。頁面開啟之後,判斷sessionstorage/localstorage中是否存在state物件,如果存在,則說明頁面是被重新整理過的,將sessionstorage/localstorage中存的資料取出來給vuex中的state賦值。如果不存在,說明是第一次開啟,則取vuex中定義的state初始值。

h5提供了我們常用的localstorage和sessionstorage。兩者的區別:localstorage生命週期是永久,這意味著除非使用者顯示在瀏覽器提供的ui上清除localstorage資訊,否則這些資訊將永遠存在。存放資料大小為一般為5mb,而且它僅在客戶端(即瀏覽器)中儲存,不參與和伺服器的通訊。sessionstorage僅在當前會話下有效,關閉頁面或瀏覽器後被清除。存放資料大小為一般為5mb,而且它僅在客戶端(即瀏覽器)中儲存,不參與和伺服器的通訊。源生介面可以接受,亦可再次封裝來對object和array有更好的支援。瀏覽器的支援除了ie7及以下不支援外,其他標準瀏覽器都完全支援(ie及ff需在web伺服器裡執行)

localstorage和sessionstorage都具有相同的操作方法,例如setitem、getitem、removeitem、clear等。

專案目錄結構:

} store裡有可能儲存了一些涉密的資訊,所以一直在 sessionstorage放著不是太好,頁面載入完成後,清空或者刪除指定的session。

window.addeventlistener("load", () => );
state.js:

var state = sessionstorage.getitem('state') ? json.parse(sessionstorage.getitem('state')) : ,

arr: [1, 2, 3]

}export default state

index.js

import vue from 'vue'

import vuex from 'vuex'

import state from './states'

import mutations from './mutations'

import getters from './getters'

import actions from './actions'

vue.use(vuex)

export default new vuex.store()

mutations.js:

import  from './mutation-types.js'

export default

}

mutation-types.js

export const some_mutation = 'some_mutation'

vuex重新整理資料消失問題

vue構建的單頁大型專案中,可能會用到vuex vuex 的狀態儲存是響應式的,當 vue 元件從 store 中讀取狀態的時候,若 store 中的狀態發生變化,那麼相應的元件也會相應地得到高效更新。但是有乙個問題就是 vuex的儲存的資料只是在頁面的中,相當於我們定義的全域性變數,重新整理之後,...

頁面重新整理vuex資料消失問題解決方案

vbox持續進行中,哀家苦啊,有沒有誰給個star。vuex是vue用於資料儲存的,和redux充當同樣的角色。最近在vbox開發的時候遇到的問題,頁面重新整理或者關閉瀏覽器再次開啟的時候資料歸零。這是頭疼的問題。網上搜,大家的方案都是把資料轉移到 localstorage或者其他持久化儲存 例如i...

vue query傳參重新整理後資料消失問題

需求 通過url傳參頁面跳轉當時能正常渲染 但是重新整理後資料就消失了 解決方案 params傳參 this.router.push 取值 this.route.params.user發現可以渲染 但是一重新整理就變成了 object object 需要在router.中修改 routes quer...