Vuex是Vue.js官方供给的状况管理形式,它经由过程会合式存储管理当用的全部组件的状况,并以响应的规矩保证状况以一种可猜测的方法产生变更。Vuex对大年夜型利用尤其有效,因为它将组件中的状况提取到外部,并经由过程全局状况管理器停止会合管理。
Vuex重要由以下核心不雅点构成:
State是Vuex中的单一状况树,用于存储利用的全部状况。它是弗成变的,只能经由过程提交mutations来修改。在Vue组件中,可能经由过程this.$store.state
来拜访状况。
const store = new Vuex.Store({
state: {
count: 0
}
});
Getters可能认为是store的打算属性,就像组件中的打算属性一样,getters的前去值会根据它的依附被缓存起来,且只有当它的依附值产生了改变才会被重新打算。经由过程getters,可能便利地派生出一些状况,或对数据停止进一步的处理。
const store = new Vuex.Store({
state: {
count: 0
},
getters: {
doubleCount: state => state.count * 2
}
});
Mutations是Vuex中独一可能修改state的方法。每个mutation都有一个字符串的变乱范例(type)跟一个回调函数(handler)。这个回调函数是现实停止状况变动的处所,并且它会接收state作为第一个参数。
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state) {
state.count++;
}
}
});
Actions类似于mutation,差别之处在于它们可能包含恣意异步操纵。Action提交的是mutation,而不是直接变革状况。
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state) {
state.count++;
}
},
actions: {
increment(context) {
context.commit('increment');
}
}
});
当利用的状况变得复杂时,可能利用module将store分割成模块,每个模块拥有本人的state、mutations、actions、getters等。
const store = new Vuex.Store({
modules: {
user: {
namespaced: true,
state: {
// ...
},
mutations: {
// ...
},
actions: {
// ...
},
getters: {
// ...
}
}
}
});
以下是一个简单的Vuex利用示例:
npm install vuex --save
在src
目录下创建一个store
目录,并在其中创建一个index.js
文件。
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state) {
state.count++;
}
},
actions: {
increment(context) {
context.commit('increment');
}
}
});
<template>
<div>
<p>Count: {{ count }}</p>
<button @click="increment">Increment</button>
</div>
</template>
<script>
import { mapState, mapActions } from 'vuex';
export default {
computed: {
...mapState(['count'])
},
methods: {
...mapActions(['increment'])
}
};
</script>
经由过程以上步调,我们可能疾速入门Vuex,并在现实项目中利用状况管理。
Vuex是Vue.js利用中非常重要的一个库,它可能帮助我们更好地管理当用状况。经由过程本文的介绍,信赖你曾经对Vuex有了深刻的懂得。在现实项目中,公道应用Vuex,可能使你的利用愈加易保护跟可扩大年夜。