在實際的vue項目中,當咱們的應用遇到多個組件之間的共享問題時,一般會用到Vuex(一個狀態管理的插件,能夠解決不一樣組件之間的數據共享和數據持久化),解決組件之間同一狀態的共享問題。vue
因子:vuex
言而總之:
實際問題:在vue項目中,使用Vuex作狀態管理時,調試頁面時,刷新後state上的數據消失了,該如何解決?npm
解決思路:將state中的數據放在瀏覽器sessionStorage和localStorage
解決辦法:瀏覽器
經過監聽頁面的刷新操做,即beforeunload前存入本地localStorage,頁面加載時再從本地localStorage讀取信息
在App.vue中加入下面代碼安全
created(){ //在頁面刷新時將vuex裏的信息保存到localStorage裏 window.addEventListener("beforeunload",()=>{ localStorage.setItem("messageStore",JSON.stringify(this.$store.state)) }) //在頁面加載時讀取localStorage裏的狀態信息 localStorage.getItem("messageStore") && this.$store.replaceState(Object.assign(this.$store.state,JSON.parse(localStorage.getItem("messageStore")))); }
安裝插件:npm install vuex-persistedstate --save
配置:
在store的index.js中,手動引入插件並配置session
import createPersistedState from "vuex-persistedstate" const store = new Vuex.Store({ // ... plugins: [createPersistedState()] })
該插件默認持久化全部state,固然也能夠指定須要持久化的state:this
import createPersistedState from "vuex-persistedstate" const store = new Vuex.Store({ // ... plugins: [createPersistedState({ storage: window.sessionStorage, reducer(data) { return { // 設置只儲存state中的myData myData: data.myData } } })]