优秀的编程知识分享平台

网站首页 > 技术文章 正文

在 Vuex 中,store(vue.$store)

nanyue 2024-10-17 11:22:28 技术文章 9 ℃

在 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 传递一个对象或数组作为参数。

最近发表
标签列表