recherche

Maison  >  Questions et réponses  >  le corps du texte

Passage des paramètres Vuex

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

À partir du apireçu, je dois obtenir l'identifiant et le transmettre à vuex. La fonction fonctionne mais écrit un élément non défini sur la console lorsqu'elle est appelée.

vuex:

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

Dans vuex, j'ai besoin id de comparer et de supprimer s'il y a les mêmes. Que dois-je changer ?

P粉828463673P粉828463673244 Il y a quelques jours463

répondre à tous(2)je répondrai

  • P粉739886290

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

    Si vous ne voulez pas changer deleteCheckboxItems 的实现,请使用数组将 this.$store.commit emballez-le avec pour chaque comme ceci : response.data.items.forEach(element => { this.$store.commit('deleteCheckboxItems', element) });

    En plus, ce qui est le plus important, c'est votre filteredBrands.filter 不会过滤,因为您没有返回值。你必须 return item.id === Payload.

    répondre
    0
  • P粉974462439

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

    Utilisation map函数代替forEach :

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

    Votre fonction filter a également besoin de quelques changements. Il devrait renvoyer une valeur booléenne, mais vous avez oublié de renvoyer cette valeur.

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

    La charge utile peut être un tableau d'identifiants, vous devez utiliser une fonction comme includes pour vérifier votre cas.

    répondre
    0
  • Annulerrépondre