Vue.js met toujours à jour les accessoires même si i est une variable de méthode
P粉432930081
P粉432930081 2023-09-15 23:36:37
0
1
691

J'ai la méthode suivante pour comparer deux tableaux, un à partir d'accessoires et un autre à partir de mon composant. J'insère chaque élément qui existe dans le tableau d'accessoires mais pas dans mon tableau de composants dans un troisième tableau et j'ajoute une propriété appelée "destroy: true" afin que je puisse l'envoyer au backend Supprimer de la base de données.

Cependant, pour une raison quelconque, mes accessoires sont mis à jour au lieu des variables que j'utilise dans la méthode. Je ne sais pas vraiment pourquoi cela se produit puisque je ne fais pas référence directement à l'accessoire, mais je copie son contenu dans une variable de la méthode.

updateArray(){
        let updatedArray = []
        let oldArray = [...this.props.array]
        oldArray.forEach(element => {
          if(this.componentArray.indexOf(element) > -1){
            updatedArray.push(element)
          }else{
            let newElement = element
            newElement.destroy = true
            updatedArray.push(newElement)
          }
        })
       return updatedArray 
},

Pourquoi cela arrive-t-il ? Les autres éléments de mon composant fonctionnent correctement, seul celui-ci présente des problèmes.

P粉432930081
P粉432930081

répondre à tous(1)
P粉465675962

Oui, vous copiez les this.props.array éléments du tableau dans un nouveau tableau local de méthode, mais comme les éléments du tableau sont des objets, les deux tableaux finissent par contenir le même objet (une référence à l' objet )

Vous pouvez créer une let newElement = { ...element }copie superficielle de l'élément d'origine à l'aide de l'opérateur de propagation - cela créera un objet complètement nouvel, copiant toutes les propriétés de l'objet d'origine. Mais sachez que si des propriétés de l'objet d'origine contiennent des tableaux/objets, vous serez confronté au même problème... juste un peu plus profond

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal