Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。
npm install vuex@next --save
import { createStore } from 'vuex';
const store = createStore({
state() {
return {
count: 0
};
},
mutations: {
increment(state) {
state.count++;
}
},
actions: {
increment(context) {
context.commit('increment');
}
},
getters: {
doubleCount(state, payload) {
return state.count + payload;
}
}
});
export default store;
import { createApp } from 'vue';
import App from './App.vue';
import store from './store';
const app = createApp(App);
app.use(store);
app.mount('#app');
<template>
<div>
<button @click="incrementCount(2)">Increment</button>
<p>Count: {{ count }}</p>
</div>
</template>
<script>
import { computed } from 'vue';
import { useStore } from 'vuex';
export default {
setup() {
const store = useStore();
const count = computed(() => store.state.count);
function incrementCount(amount) {
store.commit('increment', { amount });
}
return {
count,
incrementCount
};
}
};
</script>
<template>
<div>{{ count }}</div>
</template>
<script>
import { computed } from 'vue';
import { useStore } from 'vuex';
export default {
setup() {
const store = useStore();
const count = computed(() => store.state.count);
return {
count
};
}
};
</script>
Vuex 提供了一套完整的状态管理解决方案,适用于需要大规模状态管理的应用程序。通过集中管理状态,Vuex 使得应用程序更加结构化和可维护。