首页 > 解决方案 > Vuex 提交在没有有效负载参数的情况下无法工作

问题描述

我正在努力采取我的全球行动。要访问它,我必须使用rootState,所以我必须在提交时添加 root 选项参数。如果我将null其作为第二个参数(即payload )传递,它会起作用,但如果我将其留空,它将不起作用。

工作版本:

context.commit('shared/clearError', null, { root: true })

不工作:

context.commit('shared/clearError, { root: true })

所以问题是为什么如果没有第二个参数它是可选的,如他们的文档中所述,它不能工作?

标签: javascriptvue.jsvuejs2vuex

解决方案


您可以使用以下任一方法提交突变:

  • commit(mutation: Object, options?: Object)
  • commit(type: string, payload?: any, options?: Object)

您将它们混合在一起:您使用字符串选择突变,因此它选择具有三个参数的第二种方法。您的选项对象被选为有效负载,并且可能没有您的突变期望的数据。

这应该可以按您的预期工作:context.commit({ type: 'shared/clearError'}, { root: true }

(另外,您在第二个语句中缺少结束引号,但我想这只是一个错字)

有关更多详细信息,请参阅https://vuex.vuejs.org/guide/mutations.htmlhttps://vuex.vuejs.org/api/#vuex-store-instance-methods


推荐阅读