Vuex 参数传递

Vuex parameter passing

this.$store.commit(
  'deleteCheckboxItems',
   response.data.items.forEach(element => {
     element.id;
     })
   );

从接收到的api我需要获取id并将其传递给vuex。该函数有效,但在调用时在控制台中写入 undefined。

vuex:

 deleteCheckboxItems(state, payload) {
  if(state.filteredBrands) {
    state.filteredBrands = state.filteredBrands.filter((item) => {
      console.log(payload);
      item.id == payload;
    });
  }

在vuex中我需要id进行比较,如果相同则删除。 我应该改变什么?

使用map函数代替forEach:

this.$store.commit(
  'deleteCheckboxItems',
   response.data.items.map(({id}) => id)
);

您的 filter 函数也需要一些更改。它应该 return 一个布尔值,但你忘记了 return 这个值。

deleteCheckboxItems(state, payload) {
  console.log(payload);
  if (state.filteredBrands) {
    state.filteredBrands = state.filteredBrands.filter((item) => {
      return item.id == payload;
    });
  }
}

此外,payload 可能是一个 id 数组,您应该使用 includes 等函数来检查您的条件。

如果您不想更改 deleteCheckboxItems 的实现以采用数组将 this.$store.commit 与 for each 包装起来,如下所示: response.data.items.forEach(element => { this.$store.commit('deleteCheckboxItems', element) });

此外,更重要的是您的 filteredBrands.filter 没有过滤,因为您没有 return 值。你必须 return item.id === payload.