Vuex 是一個專爲 Vue.js 應用程序開發的狀態管理模式。它採用集中式存儲管理應用的全部組件的狀態,並以相應的規則保證狀態以一種可預測的方式發生變化。Vuex 也集成到 Vue 的官方調試工具 devtools extension,提供了諸如零配置的 time-travel 調試、狀態快照導入導出等高級調試功能。vue
import Vuex from 'vuex'
Vue.use(Vuex);
import store from './store'
複製代碼
new Vue({
el: '#app',
// 啓用路由
router,
//啓用store
store,
// 啓用 ElementUI
render: h => h(App)
});
複製代碼
import Vue from 'vue'
import Vuex from 'vuex'
import user from './model/user'
Vue.use(Vuex);
export default new Vuex.Store({
//定義模塊user
modules: {
user
}
})
複製代碼
user.js 以下vuex
//定義一個常量user
const user = {
//若是sessionStorage 中存在則使用sessionStorage 中數據 不然建立一個空 user 解決頁面刷新丟失數據
state: sessionStorage.getItem('loginUser') ? JSON.parse(sessionStorage.getItem('loginUser')) : {
user: {
username: ''
}
},
//獲取對象 this.$store.getters.getUser.userName
getters: {
getUser(state) {
return state.user;
}
},
//更新對象 this.$store.updateUser();
mutations: {
updateUser(state, user) {
state.user = user;
}
},
//異步更新對象 this.$store.dispatch("asyncUpdateUser",repos.data.data);
actions: {
asyncUpdateUser(context, user) {
context.commit('updateUser', user);
}
}
};
export default user;
複製代碼
<template>
<div id="app">
<router-view/>
</div>
</template>
<script>
export default {
name: 'App',
mounted(){
//監聽頁面刷新事件
window.addEventListener("unload",this.saveLoginUser);
},
methods:{
saveLoginUser(){
//將值VUEX中的state.user 存入sessionStorage
sessionStorage.setItem('loginUser',JSON.stringify(this.$store.state.user));
}
}
}
</script>
複製代碼