Vue: Vue n'appelle pas l'observateur lorsque vous changez d'accessoire dans beforeDestroy

Créé le 23 mai 2018  ·  3Commentaires  ·  Source: vuejs/vue

Version

2.5.16

Lien de reproduction

https://jsfiddle.net/86s8qufj/

Étapes à reproduire

  1. Ouvrir le lien de reproduction
  2. Ouvrir la console
  3. Cliquez sur le bouton « Basculer le composant de test ».
    Cela crée TestComponent pour vous.
  4. Essayez de changer quelque chose en entrée. Vous pouvez voir "In testInfo watcher" dans la console, ce qui signifie que testInfo watcher a appelé.
  5. Cliquez à nouveau sur le bouton "Toggle TestComponent".
    Cela détruit TestComponent.
    Dans le hook beforeDestroy, je modifie la propriété 'testInfo'.
    Mais vous ne pouvez voir que 'In beforeDestroy' dans la console au lieu de 'In beforeDestroy' et 'In testInfo watcher'.

Qu'est-ce qui est attendu ?

Je m'attends à ce que l'observateur de la propriété 'testInfo' soit appelé lorsque je le modifie dans le hook beforeDestory.

Que se passe-t-il réellement ?

Je modifie la propriété 'testInfo' dans le hook beforeDestroy, mais l'observateur n'est pas appelé.

Commentaire le plus utile

Je dirais qu'il serait bien de le mentionner dans la documentation - car maintenant il y a "Appelé juste avant qu'une instance Vue ne soit détruite. A ce stade, l'instance est toujours pleinement fonctionnelle."

Tous les 3 commentaires

De plus, si vous essayez de vous connecter testInfo dans le hook détruit, vous verrez une nouvelle valeur. Mais l'Objet doit être détruit...

beforeDestroy se produit juste avant de détruire l'instance de Vue, il est donc normal que les observateurs ne se déclenchent pas comme ils le feraient une fois l'instance détruite (rendant la plupart des fonctions d'observateur invalides).
Vous devriez appeler l'observateur vous-même dans le crochet beforeDestroy au lieu de modifier les données

Je dirais qu'il serait bien de le mentionner dans la documentation - car maintenant il y a "Appelé juste avant qu'une instance Vue ne soit détruite. A ce stade, l'instance est toujours pleinement fonctionnelle."

Cette page vous a été utile?
0 / 5 - 0 notes