安裝依賴vue
npm install vuex -S // 安裝vuex
import Vue from 'vue' import Vuex from 'vuex' import temp from '@/store/modules/temp' Vue.use( Vuex ); // 掛載在vue const store = new Vuex.Store({ modules: { temp, }, state: { }, getters: { }, mutations: { }, }); export default store; // 拋出
const Storage = sessionStorage const tempInfo = { state: { // 設置全局訪問的state對象 tempData: Storage['SET_TEMP_DATA'] ? JSON.parse(Storage['SET_TEMP_DATA']) : {}, // 設置初始化的值(Storage中是否存在,存在則獲取,不存在則默認賦值{}) }, mutations: { // 自定義改變state初始值的方法,這裏面的參數除了state以外還能夠再傳額外的參數(變量或對象); SET_TEMP_DATA(state, tempData) { state.tempData = tempData }, }, actions: { SetData({ commit }, tempData) { commit('SET_TEMP_DATA', tempData); // 同步操做 Storage.setItem('SET_TEMP_DATA', JSON.stringify(tempData)) } }, getters: { // 實時監聽state值得變化(最新狀態) tempData: (state) => { return state.tempData } } } export default tempInfo;
import Vue from 'vue' import App from './App' import router from './router' import store from '@/store/index' //vuex 狀態管理 Vue.config.productionTip = false /* eslint-disable no-new */ new Vue({ el: '#app', router, store, // 使用store components: { App }, template: '<App/>' })
<template> <div class="move-forward"> <div @click="click">點擊改變vuex值</div> </template> <script> export default { methods: { click() { let aa = this.$store.getters.tempData.aaa*1 this.$store.dispatch('SetData', {"aaa": aa += 1}) }, } } </script>