Vuex核心思想之Mutation、action

一、Mutation——更改store的状态的唯一方法

更改Vuex的store中的状态的唯一方式是提交mutation。Vuex中的mutation类似于事件

每个mutation都有一个字符串的事件类型(type)和一个回调函数(handler)

回调函数就是我们对状态进行操作的地方,并且他接收state作为第一个参数。

const store = new Vuex.store({
   
   
	state: {
   
   
		count: 1
	},
	mutations: {
   
   
		increment (state) {
   
   
			//变更状态
			state.count++
		}
	}
})

注意: 你不能直接调用mutations,increment更像是一个事件注册。
要唤醒一个 mutation handler,你需要以相应的type 调用 store.commit方法:

store.commit('increment') //之后打印store.state.count === 2

提交载荷(Payload)

你可以向 store.commit 传入额外的参数,即 mutation 的 载荷(payload):

// ...
mutations: {
   
   
  increment (state, n) {
   
   
    state.count += n
  }
}
store.commit('increment', 10) //此时 count == 11

在大多数情况下,载荷应该是一个对象,这样可以包含多个字段并且记录的 mutation 会更易读:

// ...
mutations: {
   
   
  increment (state, payload) {
   
   
    state.count += payload.amount
  }
}

store.commit('increment', {
   
   
  amount: 10
})

对象风格的提交方式

提交 mutation 的另一种方式是直接使用包含 type 属性的对象:

store.commit({
   
   
  type: 'increment',
  amount: 10
})

当使用对象风格的提交方式,整个对象都作为载荷传给 mutation 函数,因此 handler 保持不变:

mutations: {
   
   
  increment (state, payload) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余光、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值