Vue.js 了解Vuex中状态的最佳实践(不提交变异的函数)

Vue.js 了解Vuex中状态的最佳实践(不提交变异的函数),vue.js,vuex,Vue.js,Vuex,我没有发现任何与我的问题相近的东西,所以我决定在这里提问 在Vuex中,我们有动作、突变、getter和存储本身。如果我们需要做一个函数来检查存储中的某些东西是否满足某个条件,或者我们希望在不发生突变的情况下找出我们状态中数据的某些特定信息,那该怎么办 让我们考虑一个例子。在我们的存储中有一个名为“house”的变量。它可以有多个楼层,在某些楼层可以有复式公寓。我们想知道房子里有多少套复式公寓。因此,该函数应该可以访问该州,并且应该返回此类公寓的数量。如果我们需要在不同的组件中使用这个函数,我们

我没有发现任何与我的问题相近的东西,所以我决定在这里提问

在Vuex中,我们有动作、突变、getter和存储本身。如果我们需要做一个函数来检查存储中的某些东西是否满足某个条件,或者我们希望在不发生突变的情况下找出我们状态中数据的某些特定信息,那该怎么办

让我们考虑一个例子。在我们的存储中有一个名为“house”的变量。它可以有多个楼层,在某些楼层可以有复式公寓。我们想知道房子里有多少套复式公寓。因此,该函数应该可以访问该州,并且应该返回此类公寓的数量。如果我们需要在不同的组件中使用这个函数,我们需要在全局范围内的某个地方使用它

再举一个例子来说明这一点。我们有相同的变量“house”,我们需要知道房子是否是摩天大楼(例如,有100多层楼)。所以这个函数是一个返回布尔值的谓词

问题是:我们是否应该使用getter或其他东西,例如,用于此目的的某种全局助手?这些案例的最佳实践是什么?为什么?请在你的回答中给出答案和解释


提前谢谢你

这正是
getter
s的角色。getter是Vuex存储的一部分,用于根据存储状态计算数据,这是存储的某种计算属性

下面是state和getter的两个示例

state: {
  houses: [
    {id: 0, floors: 10},
    {id: 1, floors: 20},
    {id: 2, floors: 100}
    {id: 3, floors: 400}
  ]
},

getters: {

  // you can have dummy one
  getHouses(state){
    return state.houses
  },

  // or you can get a specific one like so
  getHouseFilteredBySpecificFloor(state){
    return floors => state.houses.filter(house => house.floors === floors)
  },

  // or you can return boolean if you want
  doesThisHouseHaveMoreThan100Floor(state){
    return ({ id }) => state.houses[id].floors > 100
  }
}

您可以使用
getters
@原因您可以对您的答案进行解释,并将其作为单独的答案,以便我可以在事后对其进行标记吗?谢谢您的解释和示例!