将 key 传递给 vuex getter 以获得不同的状态

Pass key to vuex getter to get diferent state

在vuex store中有很多类似的状态:

const state = {
  count: 0,
  count2: 1,
  count3: 2
};

每个州都有对应的 getter:

const getters = {
  getCount: (state) => state.count,
  getCount2: (state) => state.count2,
  getCount3: (state) => state.count3,
};

有没有办法把这 3 个动态地变成一个 getter 谁会接受密钥并得到相应的数据。

您可以创建另一个 getter,并使用另一个函数来传递参数。

const getters = {
  getCount: (state) => state.count,
  getCount2: (state) => state.count2,
  getCount3: (state) => state.count3,
  // The param could be "count" || "count2"
  getAllCount: (state) => (param) =>  state[param] 
  // and calling
  this.$store.getters['getAllCount'](theParamKey)
};

您有两个选择,首先,您可以 return 来自 getter 的函数,或者,这在许多情况下更有意义,您可以只更改状态和 return 对象(或数组):

const state = {
  count: {
    count1: 0,
    count2: 1,
    count3: 2,
  }
};

const getters = {
  getCount: (state) => state.count,
};

根据我的经验,第二个选项通常是最好的,因为它对其他开发人员和维护来说更容易(return从 getter 中调用一个函数是非常违反直觉的)和因为它非常容易处理对象(或数组),但肯定第一个选项也有它的用例。

我们有办法将参数传递给 getters 函数 这是你如何做的

const getters = {
getCount: (state) => (arg) => {
    return state[arg]; // where arg can be count or count1 or count2
}

参考link:https://vuex.vuejs.org/guide/getters.html#method-style-access