国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - 解決vuex刷新數據消失問題

解決vuex刷新數據消失問題

2021-11-17 16:13王永存 JavaScript

這篇文章主要介紹了解決vuex刷新數據消失問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

前言

vue構建的單頁大型項目中,可能會用到Vuex 。Vuex 的狀態存儲是響應式的,當 Vue 組件從 store 中讀取狀態的時候,若 store 中的狀態發生變化,那么相應的組件也會相應地得到高效更新。

但是有一個問題就是:vuex的存儲的數據只是在頁面的中,相當于我們定義的全局變量,刷新之后,里邊的數據就會恢復到初始化狀態。但是這個情況有時候并不是我們所希望的。

比如,用戶已經登錄了,我把登錄狀態放到state中了,一刷新頁面,還要重新登錄?購物車里的添加的數據,一刷新要重新添加?

解決思路:

監聽頁面是否刷新,如果頁面刷新了,將state對象存入到sessionStorage/localStorage中。

頁面打開之后,判斷sessionStorage/localStorage中是否存在state對象,如果存在,則說明頁面是被刷新過的,將sessionStorage/localStorage中存的數據取出來給vuex中的state賦值。

如果不存在,說明是第一次打開,則取vuex中定義的state初始值。

sessionStorage和localStorage介紹

H5提供了我們常用的localStorage和sessionStorage。

兩者的區別:localStorage生命周期是永久,這意味著除非用戶顯示在瀏覽器提供的UI上清除localStorage信息,否則這些信息將永遠存在。

存放數據大小為一般為5MB,而且它僅在客戶端(即瀏覽器)中保存,不參與和服務器的通信。sessionStorage僅在當前會話下有效,關閉頁面或瀏覽器后被清除。

存放數據大小為一般為5MB,而且它僅在客戶端(即瀏覽器)中保存,不參與和服務器的通信。

源生接口可以接受,亦可再次封裝來對Object和Array有更好的支持。瀏覽器的支持除了IE7及以下不支持外,其他標準瀏覽器都完全支持(ie及FF需在web服務器里運行)

解決vuex刷新數據消失問題

localStorage和sessionStorage都具有相同的操作方法,例如setItem、getItem、removeItem、clear等。

代碼:

項目目錄結構:

解決vuex刷新數據消失問題

在項目的入口頁面(App.vue)里添加監聽刷新事件:

name: 'App',
 mounted () {
 window.addEventListener('unload', this.saveState)
 },
 methods: {
 saveState () {
  sessionStorage.setItem('state', JSON.stringify(this.$store.state))
 }
 }

store里有可能存儲了一些涉密的信息,所以一直在 sessionStorage放著不是太好,頁面加載完成后,清空或者刪除指定的session。

 window.addEventListener("load", () => {
  sessionStorage.clear();
 });

state.js:

var state = sessionStorage.getItem('state') ? JSON.parse(sessionStorage.getItem('state')) : {
 count: 1,
 obj: {},
 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({
 state,
 mutations,
 getters,
 actions
})

mutations.js:

import {
 SOME_MUTATION
} from './mutation-types.js'
 
export default {
 [SOME_MUTATION] (state) {
 state.count++
 }
}

mutation-types.js

export const SOME_MUTATION = 'SOME_MUTATION'

補充知識:vuex-along有效防止刷新頁面后vuex中的數據重置

1.vuex-along安裝

npm i vuex-along --save

2.在store目錄下的index.js文件中引入

2.1

import {createVuexAlong} from 'vuex-along'

2.2直接上圖

解決vuex刷新數據消失問題

簡單說明其中的含義:

name:“”“”

//在這塊我存入的是localstorage,代表localstorage的鍵值

local:{list:["userInfo"],isFilter:true}

//list:要過濾的vuex中的數據,isFilter代表將userInfo濾過,其余存進localstorage

session:false

//對于sessionstorage不進行任何操作

更加詳細信息借助github進行了解:https://github.com/boenfu/vuex-along

3.以上這篇解決vuex刷新數據消失問題就是小編分享給大家的全部內容了,希望對各位將來的大佬有所幫助!也希望大家多多支持。

原文鏈接:https://blog.csdn.net/wang1006008051/article/details/82424335

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩中文字幕一区二区 | 国产精品影视 | 日本在线视频一区二区 | 久久精品视频网站 | 99中文字幕| 犬夜叉在线观看 | 欧美中文字幕在线 | 国产精品高清在线 | 夜夜爽99久久国产综合精品女不卡 | 中文字幕网站 | 性片网站 | 欧美日本在线观看 | 免费在线看a | 国产精品高清在线 | 日韩中文字幕一区 | 精品久久中文字幕 | 精品久久久久久久久久 | 久久av网| 久久九精品 | 久久国产精品二区 | 黄色小视频在线免费观看 | 久久免费99精品久久久久久 | 黄免费看| 久久99精品国产自在现线 | 99亚洲精品 | 午夜色电影 | 亚洲天堂一区在线 | 国产精品免费一区二区三区 | 日韩电影专区 | 国产日韩一区二区 | 久久综合成人精品亚洲另类欧美 | 国产一区二区三区视频在线观看 | 国产亚洲精品美女久久久久久久久久 | 中文久久 | 一区二区色| 成人刺激视频在线 | 成人福利在线 | 久久综合狠狠综合久久综合88 | 国产麻豆一区二区三区四区 | 亚洲一区中文字幕在线观看 | 国产在线一区不卡 |