Vuex简单入门5:actions

Action 类似于 mutation,不同在于:

  • Action 提交的是 mutation,而不是直接变更状态。
  • Action 可以包含任意异步操作。

1. 在store.js创建actions , 可以在中间调用 mutation中的方法 ,将actions加入store

 
const actions = {
  addAction (context) {
    context.commit('add', 33)
  },
  reduceAction ({commit}) {
    commit('reduce', 11)
  }
}
export default new Vuex.Store({
  state,
  mutations,
  getters,
  actions
})

2.  count.vue中

import {mapState, mapMutations, mapGetters, mapActions} from 'vuex'
methods: {
  ...mapMutations(['add', 'reduce']),
  ...mapActions(['addAction', 'reduceAction'])
},

这样就可以用了,但是感觉跟mutations没区别对吧,下面我们就写个异步的来看一下差别。

在actions中的addAction方法中添加一个定时器

addAction (context) {
  context.commit('add', 33)
  setTimeout(() => { context.commit('reduce') }, 5000)
  console.log('我比reduce快')
},
点一下+ 看到控制台是先输出 '我比reduce快' ,再然后count才reduce的。可以看出是异步执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值