import Vue from 'vue'
import Vuex from 'vuex'
import createLogger from 'vuex/dist/logger'
Vue.use(Vuex)
// 設置只有在開發環境的時候纔打印日誌
const debug = process.env.NODE_ENV !== 'production'
const state = {
barIndex: '1'
}
const getters = {
barIndex: state => state.barIndex
}
const mutations = {
CHANGE_INDEX (state, value) {
state.barIndex = value
}
}
const actions = {
doSomething({commit},data){
commit('CHANGE_INDEX',data)
},
}
const store = new Vuex.Store({
state,
getters,
mutations,
actions,
strict: debug,
plugins: debug ? [createLogger()] : []
})
export default store
複製代碼
初始化store,指定vuex不一樣狀態對應的文件vue
import Vue from "vue";
import Vuex from "vuex";
import * as actions from "./actions";
import * as getters from "./getters";
import state from "./state";
import mutations from "./mutations";
import createLogger from "vuex/dist/logger"; // 打印日誌
Vue.use(Vuex);
// 設置只有在開發環境的時候纔打印日誌
const debug = process.env.NODE_ENV !== "production";
export default new Vuex.Store({
actions,
getters,
state,
mutations,
strict: debug,
plugins: debug ? [createLogger()] : []
});
複製代碼
官網解釋 vuex
const state = {
status: "",
};
export default state;
複製代碼
官網解釋 bash
能夠理解爲更方便的調用state裏面的屬性異步
export const status = state => state.status;
複製代碼
通常使用輔助函數mapGetters來獲取state裏面定義的數據,能夠經過this.status直接使用模塊化
computed: {
// 使用對象展開運算符將 getter 混入 computed 對象中
...mapGetters([
'status',
// ...
])
}
複製代碼
官網解釋函數
export const SET_STATUS = "SET_STATUS";
複製代碼
官網解釋ui
import * as types from "./mutation-types";
// payload就是經過mapMutations函數傳過來的數據number1
const mutations = {
[types.SET_STATUS](state, payload) {
state.status = payload;
}
};
export default mutations;
複製代碼
通常使用輔助函數mapMutations來使用this
methods: {
// 引入
...mapMutations({
set_status: 'SET_STATUS'
}),
// 使用
this.set_status('number1')
}
複製代碼
官網解釋spa
import * as types from "./mutation-types";
export const actionsSetdataInfo = ({ commit }, data) => {
// 這裏能夠調用接口,當數據返回後,再經過commit把數據同步到mutations裏面
commit(types.SET_STATUS, data);
};
複製代碼