Vuex分成五个部分
- state:存放状态数据的地方,其中数据是响应式的,数据改变对应组件的数据也会跟新改变,禁止直接改变state中的数据否则数据无法被调试工具监测
- getter:为store的计算属性,能读取state中的数据
- mutations:是改变state中数据的唯一方法,修改数据是同步的。
- actions:提交mutations修改数据,与mutations功能类似,但修改数据是异步的
- modules:当store过于臃肿时,可使用modules将store分割成模块,每个模块中都有自己的state、getter、mutations、actions
创建store
import Vue from "vue"
import Vuex from "vuex"
Vue.use(Vuex)
export default new Vuex.store({
state: {
count: 1
},
getters: {
getCount:(state) => state.count * 10
}
mutations: {
setCount(state,data){
state.count = data
}
},
actions: {
asGetCount(context, name){
setTimeOut(()=>{
context.commit("setCount",name)
},1000)
}
},
modules: {
},
})
页面使用
import { mapState, mapGetters,mapMutations, mapActions } from "vuex"
methods: {
...mapMutations(["setCount"]),
...mapActions(["asGetCount"]),
},
computed: {
...mapState(["count"]),
...mapGetters(["getCount"]),
},
this.$store.commit("setCount",666)
this.$store.dispatch("asGetCount",8888)