Vuex 參數傳遞
P粉828463673
P粉828463673 2024-04-03 22:36:08
0
2
486

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來比較,如果有相同則刪除。 我該改變什麼?

P粉828463673
P粉828463673

全部回覆(2)
P粉739886290

如果您不想更改 deleteCheckboxItems 的實現,請使用數組將 this.$store.commit 與 for every 一起包裝,如下所示: response.data.items.forEach(element => { this.$store.commit('deleteCheckboxItems', element) });

此外,更重要的是您的 filteredBrands.filter 不會過濾,因為您沒有傳回值。你必須 return item.id === Payload.

#
P粉974462439

使用map函數取代forEach

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

您的 filter 函數也需要一些更改。它應該會傳回一個布林值,但您忘記傳回該值。

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

有效負載可能是一個 id 數組,您應該使用一些函數,例如 includes 來檢查您的情況。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板