Vue: Levage vnode - avertissement de boucle infinie

Créé le 15 sept. 2017  ·  3Commentaires  ·  Source: vuejs/vue

Version

2.4.4

Lien de reproduction

http://jsfiddle.net/vjvMp/2019/

Étapes à reproduire

La disposition précise des composants se trouve dans le JSFiddle. L'assemblage des composants est pour une raison très fragile ce qui me fait penser qu'il s'agit d'un bug. Par exemple, si je supprime le composant layout qui ne devrait pas affecter le code, l'avertissement disparaît : http://jsfiddle.net/vjvMp/2020/

Qu'est-ce qui est attendu ?

Pour que la fente sur l'Enfant soit hissée jusqu'au Parent et rendue au-dessus de l'Enfant sans problème.

Que se passe-t-il réellement ?

L'enfant est rendu mais il y a un avertissement de boucle de mise à jour infinie.

Commentaire le plus utile

  • Vous retournez l'API de data , cela rend l'objet while api réactif
  • Lorsque vous définissez les vnodes dans l'API, Vue tente de convertir le vnode
  • Dans la version 2.4.3, les nœuds d'emplacement sont désormais clonés en profondeur lors du nouveau rendu pour corriger certains bogues, ce qui oblige la fonction de rendu à enregistrer l'intégralité du vnode comme dépendance réactive, donc la mutation du vnode déclenche un nouveau rendu.

Pour l'instant, votre solution de contournement pourrait être soit Object.freeze le vnode, soit ne pas rendre l'injection d'API réactive.

Tous les 3 commentaires

Le code fonctionnait en v2.4.2 ; semble avoir été introduit à la v2.4.3.

  • Vous retournez l'API de data , cela rend l'objet while api réactif
  • Lorsque vous définissez les vnodes dans l'API, Vue tente de convertir le vnode
  • Dans la version 2.4.3, les nœuds d'emplacement sont désormais clonés en profondeur lors du nouveau rendu pour corriger certains bogues, ce qui oblige la fonction de rendu à enregistrer l'intégralité du vnode comme dépendance réactive, donc la mutation du vnode déclenche un nouveau rendu.

Pour l'instant, votre solution de contournement pourrait être soit Object.freeze le vnode, soit ne pas rendre l'injection d'API réactive.

Le correctif fonctionne très bien ! Merci @yyx990803

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