【问题标题】:Filter is not working inside the action for filtering array of objects in Vuex过滤器在 Vuex 中过滤对象数组的操作中不起作用
【发布时间】:2021-03-21 23:17:20
【问题描述】:

我有一个 getter 对象数组。我正在使用 getter 内部操作并尝试对其进行过滤,但无论我做什么过滤都不起作用,它会返回所有映射的项目 ID。

filterItems({ getters, commit }) {
  let filteredItems = getters.getAllItems
    .filter(item => item.type !== 'hat' || item.type !== 'glases')
    .map(item => item.id)
  console.log(filterItems)
  commit('setFilteredItems', filteredItems)
},

怎么了?

【问题讨论】:

  • 似乎应该调用getAllItems。试试getAllItems().filter...
  • @SagiRika getter 是属性而不是方法
  • @BoussadjraBrahim 原因可能是吸气剂正在发生变化,而行动无法跟踪这种变化吗?还是过滤器本身有问题?
  • 您是否尝试将它们分开?
  • 是的,我想用过滤的对象数组更新状态。所以状态将只有过滤后的结果

标签: javascript vue.js vuejs2 vue-component vuex


【解决方案1】:

我认为问题来自这里:

item.type !== 'hat' || item.type !== 'glases'
  1. 这总是返回true,因为item.type 永远不会同时等于'hat''glases'
  2. 我怀疑'glases' 的拼写是否正确?这可能是个问题或只是输入错误

【讨论】:

  • 那么我应该在这里使用 && 吗?
  • 我不知道你想要什么。您要退回不是“帽子”和“眼镜”的物品吗?如果是这样, && 应该做的工作
  • 如果您的问题已解决,请告诉我 =))
  • 我一定会检查的
猜你喜欢
  • 2021-08-03
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
  • 2020-05-30
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多