import { createStore } from 'vuex';
const counterModule = {
namespaced: true,
state: {
count: 0
},
mutations: {
INCREMENT(state) {
state.count++;
}
}
};
const messageModule = {
namespaced: true,
state: {
text: 'Hello Vuex'
},
getters: {
uppercase(state) {
return state.text.toUpperCase();
}
}
};
export default createStore({
modules: {
counter: counterModule,
message: messageModule
}
});
<template>
<div>
<h1>计数器: {{ counter.count }}</h1>
<button @click="increment">+</button>
<h2>消息: {{ message.text }}</h2>
<p>大写: {{ uppercaseMessage }}</p>
</div>
</template>
<script>
import { mapState, mapGetters, mapMutations } from 'vuex';
export default {
computed: {
...mapState('counter', ['count' as 'counter']),
...mapState('message', ['text' as 'message']),
...mapGetters('message', ['uppercase' as 'uppercaseMessage'])
},
methods: {
...mapMutations('counter', ['INCREMENT' as 'increment'])
}
};
</script>