import Vue from 'vue'
import Vuex from 'vuex'
import state from './state'
import getters from './getters'
import mutations from './mutations'
import actions from './actions'
import {myPlugin} from './plugins';
// vuex自带日志插件
import createLogger from 'vuex/dist/logger';
// 刷新时可以保存vuex状态的插件,通过localStorage实现
import createPersistedState from "vuex-persistedstate";
import products from './modules/products'
import cart from './modules/cart'
Vue.use(Vuex)
//不要在发布环境下启用严格模式!
const debug =process.env.NODE_ENV !== 'production';
const store = new Vuex.Store({
strict: debug,
state,
getters,
mutations,
actions,
modules: {
products,
cart
},
plugins: [createLogger(), /*myPlugin*/ /*createPersistedState()*/]
})
// 2.手写
window.addEventListener('beforeunload', () => {
localStorage.setItem('stateInfo', JSON.stringify(store.state))
})
if(localStorage.getItem('stateInfo')) {
store.replaceState(
Object.assign(
{},
store.state,
JSON.parse(localStorage.getItem('stateInfo'))
)
)
}
localStorage.removeItem('stateInfo')
export default store;
//plugins.js
export const myPlugin = store => {
store.subscribe((mutation, state)=>{
console.log(mutation);
})
}