在 Vuex 中,store.dispatch 方法用于触发 action。action 负责处理异步操作并提交 mutation 来更新状态。
要向 store.dispatch 传递参数,可以使用以下两种方式:
1. 使用对象字面量
JavaScript
this.$store.dispatch('actionName', {
payload: {
// 参数数据
}
})
例如,以下代码将向 updateTodo action 传递一个包含 ID 和新完成状态的对象:
JavaScript
this.$store.dispatch('updateTodo', {
id: 1,
completed: true
})
2. 使用数组
JavaScript
this.$store.dispatch('actionName', [
payload1,
payload2,
// ... 其他参数
])
例如,以下代码将向 incrementCount action 传递两个参数:
JavaScript
this.$store.dispatch('incrementCount', [10, 20])
action 中的参数访问
在 action 中,可以使用 context 对象来访问传递的参数。context 对象具有以下属性:
commit: 用于提交 mutation
state: 用于获取当前状态
getters: 用于获取 getters
dispatch: 用于分发其他 action
要访问传递的参数,可以使用 context.payload 属性。context.payload 是一个对象,包含 action 收到的所有参数。
例如,以下代码将从 updateTodo action 中获取传递的参数:
JavaScript
export default {
updateTodo({ commit, state, payload }) {
const { id, completed } = payload
// 更新状态
commit('UPDATE_TODO', {
id,
completed
})
}
注意事项
务必确保 action 的第一个参数是 context 对象。
只能向 action 传递一个对象或数组作为参数。
本文暂时没有评论,来添加一个吧(●'◡'●)