Je suis l'auteur principal d'un module de dom 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 effectuer un nouveau rendu? Réponse: Quand j'observe que les données sont sales.
- Comment effectuer un nouveau rendu efficace? Réponse: utiliser un DOM virtuel pour générer un vrai patch DOM
Dans React, chacun de vos composants a un état. Cet état est semblable à un observable que vous pourriez trouver dans les bibliothèques de style knockout ou MVVM. Essentiellement, React sait quand restituer la scène car il est capable d'observer quand ces données changent. La vérification incorrecte est plus lente 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. Par 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 un nouveau rendu.
Le DOM virtuel est utilisé pour un nouveau rendu efficace du DOM. Ce n'est pas vraiment lié à une vérification incorrecte de vos données. Vous pouvez effectuer un nouveau rendu à l'aide d'un DOM virtuel avec ou sans vérification incorrecte. Vous avez raison en ce qu'il y a des frais généraux dans le calcul du diff entre deux arborescences virtuelles, mais le diff DOM virtuel consiste à comprendre ce qui doit être mis à jour dans le DOM et non pas si vos données ont 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.
Nous visons à restituer l'arbre virtuel uniquement lorsque l'état change. Donc, utiliser un observable pour vérifier si l'état a changé est un moyen efficace d'empêcher les re-rendus inutiles, ce qui entraînerait beaucoup de différences d'arbre inutiles. Si rien n'a changé, nous ne faisons rien.
Un DOM virtuel est agréable car il nous permet d'écrire notre code comme si nous restituions la scène entière. Dans les coulisses, nous voulons calculer une opération de correctif qui met à jour le DOM pour voir comment nous nous attendons. Ainsi, alors que l'algorithme de diff / patch DOM virtuel n'est probablement pas la solution optimale , il nous donne un très bon moyen d'exprimer nos applications. Nous déclarons juste exactement ce que nous voulons et React / virtual-dom déterminera comment faire ressembler votre scène à ceci. Nous n'avons pas à faire de manipulation manuelle du DOM ni à être confus au sujet de l'état précédent du DOM. Nous n'avons pas non plus à restituer la scène entière, ce qui pourrait être beaucoup moins efficace que de la patcher.