suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Vuex-Parameterübergabe

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

Aus dem apierhaltenen muss ich die ID abrufen und sie an vuex weitergeben. Die Funktion funktioniert, schreibt beim Aufruf jedoch undefiniert in die Konsole.

vuex:

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

In vuex muss ich id vergleichen und löschen, wenn es dasselbe gibt. Was soll ich ändern?

P粉828463673P粉828463673274 Tage vor500

Antworte allen(2)Ich werde antworten

  • P粉739886290

    P粉7398862902024-04-04 20:28:30

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

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

    Antwort
    0
  • P粉974462439

    P粉9744624392024-04-04 10:32:57

    使用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 来检查您的情况。

    Antwort
    0
  • StornierenAntwort