Указывает ли алгоритм различий виртуального DOM единственную разницу и исправляет реальный DOM? - PullRequest
0 голосов
/ 08 декабря 2018

Что я узнал о Virtual DOM и его алгоритме diff, так это то, что когда происходит изменение в определенном компоненте (или элементе / и его дочерних элементах), эффективно согласовать этот конкретный компонент и дочерние элементы, потому что, кроме этого, другиеКомпонент DOM не будет изменен.

Однако, что я уже знаю, это то, что отнимающая много времени часть манипуляции с DOM - это момент пересчета стиля элемента (например, CSS).

Если компонент вмежду многими другими изменениями компонентов, такими как изменение стиля высоты или отключение, посредством такого изменения будут затронуты родственные компоненты ниже , в которых стиль этих компонентов должен быть заново отображен (relayoutили перекрасить).

Значит, это не значит, что объект React - манипулирование только измененной частью представления виртуальным DOM и алгоритмом diff - не будет достигнут?

Неужели янедопонимание, или это нормально?

Если это нормально (ситуация из-заизмененный компонент в середине других компонентов, остальные компоненты, указанные ниже, также должны быть изменены), в чем же преимущество React по сравнению с простым манипулирующим методом DOM, кроме пакетного процесса или декларативного метода?Это нормально называть это «патч»?

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

React 'virtual DOM' - это просто объект javascript.Это не имеет ничего общего со стилями и макетами во время сверки.После каждого рендеринга React может различать этот объект с результатом предыдущего рендера и обновляет только измененный атрибут соответствующего элемента DOM.Вот пояснительное изображение из React doc, вы можете видеть, что обновление хорошо локализовано.

enter image description here

0 голосов
/ 08 декабря 2018

Вы обеспокоены тем, что изменение стиля родительского компонента может вызвать компоновку браузера его дочерних компонентов

Однако эта проблема по-прежнему возникает независимо от того, используете ли вы виртуальный домен реакции или нет

  • Преимущество в виртуальном dom реагирует на то, что оно агрегирует операции dom и устраняет (устраняет дублирование) избыточные операции

    Эта широкая оптимизация обычно приводит к меньшему количеству операций dom, чем если бы вы "кодированный вручную "it

  • В редких случаях вы можете получить более оптимальный результат, не реагируя на виртуальный дом, очень тщательно управляя операциями с домом вручную

    «Руководство» редко стоит внимания

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...