【问题标题】:When accessing state: unknown mutation type访问状态时:未知突变类型
【发布时间】:2021-05-01 08:49:28
【问题描述】:

我正在尝试从另一个模块更新状态。结构是。

store.js
|
|-- yields.js
|
|--analysis (sub-folder)
          |
          |
          ---actions.js
          |
          ---mutations.js
          |
          ---state.js

所以按照建议,我在 actions.js 中使用了这个:

export const actions = {
  analysisAction({
    commit,
    rootState
  }, input) {
    commit('stateFetchParamsStart', input); // Commit in this module
    commit('yields/statePRdate', input, {
      root: true
    }); // Commit in another module
  },...

在 yield.js 中添加了一个突变:

const mutations = {
  statePRdate: (state, input) => {
    state.PRdate = input;
  },...

并在计算属性中调用它,例如:

computed: {
    start: {
        get() {
                return this.$store.state.analysis.fetchParams.start
            },
            set(value) {this.$store.dispatch('analysisAction', value);
            }
    },...

methods: {
    ...mapActions([
            'otherActions',
            'analysisAction'
        ]),

我也尝试了命名空间变体,但它给了我一个错误。使用此解决方案,state.fetchParams.start 的突变正在起作用,但出现错误:[vuex] unknown mutation type: yields/statePRdate

所以它不能调用其他状态的突变。

【问题讨论】:

  • @Radeanu 我就是这样做的。只是将值设置为空。但我需要将其设置为值。
  • 如果您不使用命名空间模块,则必须从第二次提交中删除 yields/。不能混合和匹配命名空间语法
  • @Dan 再次感谢!你救了我的命。 :)

标签: vue.js vuex


【解决方案1】:

向提供解决方案的@Dan 致敬。我只需要删除 '/yields' 以避免混淆命名空间和非命名空间语法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-13
    • 2019-10-07
    • 2019-07-02
    • 2017-12-27
    • 2018-05-13
    • 1970-01-01
    • 2020-12-18
    • 2020-10-24
    相关资源
    最近更新 更多