一、刷新时使用sessionStorage储存state
created() {
if (sessionStorage.getItem('store')) {
this.$store.replaceState(Object.assign({}, this.$store.state, JSON.parse(sessionStorage.getItem('store'))))
sessionStorage.removeItem('store')
}
window.addEventListener('beforeunload', () => {
sessionStorage.setItem('store', JSON.stringify(this.$store.state))
})
}
二、vuex-persistedstate插件
1.安装
npm install vuex-persistedstate --save
2.默认持久化所有state
import Vue from 'vue'
import Vuex from 'vuex'
import user from './user'
Vue.use(Vuex)
import createPersistedState from "vuex-persistedstate"
const store = new Vuex.Store({
modules: {
user,
},
plugins: [createPersistedState()]
})
export default store
注:createPersistedState({
storage: window.sessionStorage,
storage: window.cookie,
storage: window.localStorage
})
3.指定需要持久化的state
plugins: [createPersistedState({
// 只能获取到state.user.username 的值
reducer: state => {
const username = state.user.username
return {
username
}
}
})]