vuex配sessionStorage進行自動儲存,解決重新整理資料丟失的問題。
最近在重構以前的老程式碼,發現上一個前端都是直接用sessionStorage.setItem做的資料儲存,對於Vuex也沒有做一個持久化的儲存,重新整理就沒了。
於是我對這個重新做了一個處理。
大致是這麼想的,
第一點:我想每次修改store裡面的資料的時候,sessionStorage就自動儲存更新一遍,而不是我手動去更新sessionStroage裡面的資料。
我的做法是:使用vuex的 subscribe 訂閱。
因為要修改store裡面的資料,會呼叫到mutation 。而subscribe是訂閱 store 的 mutation。handler 會在每個 mutation 完成後呼叫,接收 mutation 和經過 mutation 後的狀態作為引數:意味著我每次呼叫mutaion它就會執行一次,那麼在我資料狀態不多的情況下,我可以簡單粗暴的使用這個方法,每呼叫一次mutaion我就做一次session的更新。
在vuex的index.js介面:
store.subscribe((mutations, state) => {
sessionStorage.setItem('XXXXX', JSON.stringify(state))
})
你可以做多個儲存名字,每次只儲存你想儲存的部分。
第二點:我希望我重新整理頁面之後,我vuex的資料不會丟失。
vuex 是沒有持久化儲存的,重新整理之後需要重新從sessionStorage裡面獲取資料,所以我們需要監聽頁面重新整理這一個動作,來達到重新整理的時候,vuex裡面的能自動獲取sessionStorage裡面的資料重新給自己賦值一遍。
// 為了防止重新整理時vuex的資料丟失
if (sessionStorage.getItem("XXXXX") ) {
this.$store.replaceState(Object.assign({}, this.$store.state,JSON.parse(sessionStorage.getItem("XXXXX"))))
}
//在頁面重新整理時將vuex裡的資訊儲存到sessionStorage裡
// pagehide為了相容ios
window.addEventListener("pagehide",()=>{
sessionStorage.setItem("XXXXX",JSON.stringify(this.$store.getters))
})
就可以了
相關文章
- Vuex資料頁面重新整理丟失問題解決方案Vue
- vuex頁面重新整理資料丟失的解決辦法Vue
- vuex頁面重新整理後資料丟失Vue
- Vuex持久化外掛(vuex-persistedstate)-解決重新整理資料消失的問題Vue持久化
- Vuex持久化外掛-解決重新整理資料消失的問題Vue持久化
- 解決overlay2儲存驅動的磁碟配額問題
- vue傳參頁面重新整理資料丟失問題Vue
- 用getChildFragmentManager解決Fragment巢狀Fragment資料丟失的問題Fragment巢狀
- RocketMq訊息丟失問題解決MQ
- 資料庫高可靠,輕鬆解決事務丟失問題資料庫
- 儲存互斥失敗導致資料丟失的資料恢復成功案例資料恢復
- 【儲存資料恢復】esx vmfs的互斥導致儲存資料丟失的資料恢復案例資料恢復
- 解決Oracle資料庫日誌檔案丟失恢復問題Oracle資料庫
- 當儲存EVA出現故障這種方法可高效解決資料丟失的情況
- JavaScript中解決計算精度丟失的問題JavaScript
- dfm檔案資料丟失問題
- sessionStorage:提供瀏覽會話資料的儲存Session會話
- 解決vscode 中儲存後html自動格式化的問題VSCodeHTML
- MongoDB 預設寫入關注儲存資料丟失問題與原始碼簡單分析MongoDB原始碼
- 儲存崩潰導致資料丟失如何處理
- 伺服器儲存金蝶資料庫丟失恢復伺服器資料庫
- Jison解決JS處理後端返回的Long型資料精度丟失問題JS後端
- session丟失與解決辦法的資料Session
- Django資料庫連線丟失問題Django資料庫
- 將企業檔案共享解決方案與資料丟失防護配對
- 儲存意外斷電導致raid資訊丟失的解決過程AI
- cassandra tombstone導致寫資料丟失問題徵解
- SpringCloud解決feign呼叫token丟失問題SpringGCCloud
- RabbitMQ如何解決被重複消費和資料丟失的問題?MQ
- Web-請求資料+號丟失問題Web
- Java中的Properties類儲存丟失資訊?!Java
- 使用impdp不當導致的資料丟失問題
- 儲存控制器自動切換問題
- 資料倉儲的效能問題及解決之道
- 解決vue移動端適配問題Vue
- 移動端適配問題解決方案
- Word2003自動儲存時間設定,防止資訊丟失
- springMVC儲存資料到mysql資料庫中文亂碼問題解決方法SpringMVCMySql資料庫