store.js 1.69 KB
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const moduleA = {
    state: {
      module: 'A'
    },
    getters: {},
    mutations: {},
    actions: {}
}

const moduleB = {
    state: {
      module: 'B'
    },
    getters: {},
    mutations: {},
    actions: {}
}

const store = new Vuex.Store({
        state: {
            count: 0,
            size: 10,
            isLogin: false,
            todos: [{
                id: 1,
                text: '...',
                done: true
            }, {
                id: 2,
                text: '...',
                done: false
            }],
            obj: {
                size: 1
            }
        },
        getters: {
            doneTodos: state => {
                return state.todos.filter(todo => todo.done)
            },
            doneTodosCount: (state, getters) => {
                return getters.doneTodos.length
            }
        },
        mutations: {
            // increment (state, payload) {
            //   state.count += payload.amount
            // },
            increment: state => state.count++,
            decrement: state => state.count--,
            login: state => state.isLogin = true,
            addObj: state => state.obj = {...state.obj,
                newProp: 123
            }
        },
        actions: {
            increment({ commit }) {
                // 对象解构
                commit('increment')
            },
            incrementAsync({ commit }) {
                setTimeout(() => {
                    commit('increment')
                }, 1000)
            }
        },
        modules: {
            a: moduleA,
            b: moduleB
        }
})

export default store