如何从Vuex的变异或动作中调用共享的辅助函数

时间:2018-08-19 08:17:26

标签: vue.js vuex

我正在尝试分离一些在Vuex变异中许多调用中常见的代码。我感到不高兴,但是我不明白为什么。

下面是一些示例代码的图片:

我已经在Vuex中添加了此“帮助程序”条目-显然不存在,但是如何从突变和/或动作中调用共享的帮助程序功能“ getColumn”?

enter image description here


还是我不得不诉诸'VuexHelper'类的静态方法? :(

类似的东西:

enter image description here

注意 我已经看过以下内容:

  1. Vue Mixins-是的,类似的方法可以工作,但不能 Vuex支持-此外,vue方法不会返回值 ...
  2. 我看过模块,但是这些仍然不能满足我的需求,即返回值的简单可重用函数。

谢谢

2 个答案:

答案 0 :(得分:4)

我不明白为什么您可能想在商店中添加辅助功能。您可以只使用普通功能。

function getColumn(state, colName) {
  // Do your thing.
}

const vstore = new Vuex.Store({
  // ....
  mutations: {
    removeColumn(state, colName) {
      var column = getColumns(state, colName);
    }
  }
};

另一方面,如果您确实需要,则可以访问原始模块及其包含的所有内容:

var column = this._modules.root._rawModule.helpers.getColumns(state, colName);

尽管未记录此语法,但可以在以后的版本中更改。

答案 1 :(得分:1)

您可能希望将getColumn作为VueX存储上的getter函数实现。 例如:

getters: {
  getColumn: state => colName => {
    ... return column;
  }
}

现在getColumn可以在商店内使用,就像这样:

let x = getters.getColumn('colNameString');