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

Une fuite de mémoire se produit lors de la modification de la valeur indiquant un index dans une propriété calculée

J'ai un problème avec ma propriété calculée

correctAnswersForCurrentStage(): object {return 
    return this.correctAnswers[this.currentLevel] ?? {};
},

Un peu de contexte : this.CorrectAnswers est un objet dont les propriétés sont les niveaux et les valeurs sont des objets pour chaque porte :

this.correctAnswers = {
     "1": {
        "1": 15,
        "2": 25,
        "3": 35,
        "4": 45
    },
    "2": {
        "1": 15,
        "2": 25,
        "3": 35,
        "4": 45
    },
}

Donc, lorsqu'un niveau est terminé, j'ajouterai d'autres niveaux

this.currentLevel++

Tout sera bloqué après cela. Je ne sais pas si c'est Vue ou TypeScript qui pose ce problème. Ou peut-être une combinaison des deux ? Est-ce que quelqu'un sait pourquoi cela se produit ?

J'ai essayé de désactiver l'augmentation du niveau et il n'y a eu aucun problème. Évidemment, je suis resté au même niveau. Mais une autre logique de réinitialisation fonctionne

Suivi :

J'ai toujours eu le même problème lorsque je l'ai modifié pour qu'il n'ait pas besoin d'utiliser d'index, maintenant je l'ai fait :

correctAnswersForCurrentStage(): object {
    if (this.currentLevel === 1) {
        return this.correctAnswersForLevel1;
    }
    if (this.currentLevel === 2) {
        return this.correctAnswersForLevel2;
    }
    if (this.currentLevel === 3) {
        return this.correctAnswersForLevel3;
    }
    if (this.currentLevel === 4) {
        return this.correctAnswersForLevel4;
    }
    return {};
},

P粉786432579P粉786432579404 Il y a quelques jours572

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

  • P粉191610580

    P粉1916105802023-09-11 14:18:26

    C'est difficile à dire avec le code actuellement fourni, mais je soupçonne que this. CorrectAnswersForLevel1 etc. sont également des propriétés calculées. Cela signifie que vous obtenez une référence circulaire, résultant en une boucle infinie.

    De plus, le code contient également des références incorrectes : this. CorrectAnswers['1']this. CorrectAnswers[1] Différent car il compare les chaînes et les nombres entre eux.

    répondre
    0
  • Annulerrépondre