用来管理状态,共享数据,在各个组件之间管理外部状态
如何使用?
第一步: 在main.js引入vuex,并通过use方法使用它
import Vuex from 'vuex'
Vue.use(Vuex)
第二步: 在main.js创建状态仓库
//创建状态仓库,注意Store,state不能改
var store = new Vuex.Store({
state: {
num: 88
}
})
第三步:通过this.$sore.state.XXX直接拿到需要的数据
computed: {
getNum: function(){
return this.$store.state.num
}
}
11.5 Vuex的相关操作
vuex状态管理的流程
view———>actions———–>mutations—–>state————>view
除了能够获取状态如何改变状态呢?
//创建状态仓库,注意Store,state不能改
export default new Vuex.Store({
state: {
num: 88
},
mutations: {
//定义我们状态改变的函数
increase: function(state){
state.num++
},
decrease(state){
state.num = state.num - 20
}
},
actions: {
//context为我们上下文的对象
decreaseAction: function(context){
//actions只能对mutations中的函数进行操作
// setTimeout(function(){
context.commit('decrease')
// },1000)
}
},
getters: {
getNum: function(state){
return state.num>0 ? state.num : 0
}
}
})
methods: {
padd(){
this.$store.commit('increase')
},
pActions(){
this.$store.dispatch('decreaseAction')
}
},
computed: {
getNum: function(){
//return this.$store.state.num
return this.$store.getters.getNum
}
}
注意:actions提交的是mutation,而不是直接变更状态
actions可以包含异步操作,但是mutation只能包含同步操作
网友评论