Je suis l'auteur principal d'un domaine virtuel donc je pourrais être en mesure de répondre à vos questions. Il y a en fait 2 problèmes qui doivent être résolus ici
-
Quand dois-je refaire le rendu ? Réponse : Lorsque j'observe que les données sont sales.
-
Comment refaire un rendu efficace ? Réponse : Utilisation d'un DOM virtuel pour générer un patch DOM réel
Dans React, chacun de vos composants a un état. Cet état est comme un observable que vous pourriez trouver dans knockout ou d'autres bibliothèques de style MVVM. Essentiellement, React sait quand de refaire le rendu de la scène car il est capable d'observer quand ces données changent. Le contrôle d'état est plus lent que les observables car vous devez interroger les données à intervalles réguliers et vérifier toutes les valeurs de la structure de données de manière récursive. En comparaison, la définition d'une valeur sur l'état signalera à un auditeur qu'un certain état a changé, de sorte que React peut simplement écouter les événements de changement sur l'état et mettre en file d'attente le nouveau rendu.
Le DOM virtuel est utilisé pour un nouveau rendu efficace du DOM. Cela n'est pas vraiment lié au dirty checking de vos données. Vous pouvez effectuer un nouveau rendu en utilisant un DOM virtuel avec ou sans dirty checking. Vous avez raison de dire qu'il y a une certaine surcharge dans le calcul de la différence entre deux arbres virtuels, mais la différence du DOM virtuel concerne la compréhension de ce qui doit être mis à jour dans le DOM et non pas le fait que vos données aient changé ou non. En fait, l'algorithme diff est un vérificateur sale lui-même mais il est utilisé pour voir si le DOM est sale à la place.
Notre objectif est de ne rendre à nouveau l'arbre virtuel que lorsque l'état change. Ainsi, l'utilisation d'un observable pour vérifier si l'état a changé est un moyen efficace d'éviter les rendus inutiles, qui entraîneraient de nombreuses différences inutiles dans l'arbre. Si rien n'a changé, nous ne faisons rien.
Un DOM virtuel est intéressant parce qu'il nous permet d'écrire notre code comme si nous faisions un nouveau rendu de la scène entière. Dans les coulisses, nous voulons calculer une opération de patch qui met à jour le DOM pour qu'il ressemble à ce que nous attendons. Ainsi, alors que l'algorithme diff/patch du DOM virtuel n'est probablement pas la solution optimale il nous donne un moyen très agréable d'exprimer nos applications. Il nous suffit de déclarer exactement ce que nous voulons et React/virtual-dom se débrouillera pour que votre scène ressemble à ceci. Nous n'avons pas besoin de manipuler manuellement le DOM ou de nous embrouiller avec l'état précédent du DOM. Nous n'avons pas non plus à refaire le rendu de toute la scène, ce qui pourrait être beaucoup moins efficace que de Parcheandola faire.
0 votes
Je pense que vous pourriez aussi mentionner cette discussion youtube.com/watch?v=-DX3vJiqxm4 où il parle spécifiquement des repères.