Что означают документы React под следующим утверждением? - PullRequest
0 голосов
/ 30 марта 2020

По нашему опыту, размышления о том, как должен выглядеть пользовательский интерфейс в любой данный момент, а не о том, как его менять во времени, устраняют целый класс ошибок.

Из React Docs

Насколько я понимаю, это означает, что React обновляет только то, что необходимо, вместо того, чтобы снова разрушать и перестраивать все дерево DOM. Я не прав?

Может кто-нибудь помочь мне разобраться в цитируемом утверждении?

Спасибо.

1 Ответ

0 голосов
/ 30 марта 2020

Насколько я понимаю, это означает, что React обновляет только то, что необходимо, а не разрушает и заново строит все дерево DOM. Я не прав?

Если вы хотите узнать краткий ответ, я должен сказать, что это true , React обновит необходимые элементы в DOM всякий раз, когда это необходимо .

Но если вы хотите знать, как это делается, и когда React обновит DOM и его элемент, я должен изменить его по-разному, например архитектура проекта, используя надлежащие методы (надлежащие перехватчики в функциональном компоненте, например. useCallback, useMemo и т. д.) и т. д.

Когда он действительно получит рендеринг, тогда?

Насколько я знаю, есть два способа, которыми React узнает, когда нужно перерисовать DOM.

  1. Передача элементов в ReactDOM.render

  2. Обновление состояния

Что такое ReactDOM.render?

Это вызовет метод render() из react-dom (где мы обычно импортируют его как ReactDOM), и он отображает элемент React в DOM в предоставленном контейнере и возвращает ссылку на компонент (или возвращает null для компонентов без состояния). Кроме того, если элемент React ранее отображался в контейнере, он будет обновлять его и изменять только DOM по мере необходимости, чтобы отразить последний элемент React.

Что означает состояние?

В объекте state хранятся значения свойств, которые принадлежат компоненту. Поэтому, когда у вас есть компонент, и у этого компонента есть свои собственные определенные c переменные, изменение которых должно влиять на DOM, вы должны его использовать, тогда, когда состояние получает изменения, компонент будет обновляться.

Так что я вообще говорил об архитектуре проекта и подобных вещах, когда я ничего не упомянул об этом выше?

Скажем, у нас есть проект с одним родительским компонентом и 3 дочерними Компонент просто так:

Component 1  

- |- Component 2


- - |- Component 3


- - - |- Component 4

Поэтому, когда вы state in Component 4, все элементы DOM будут перерисованы, почему тогда? Поскольку Component 4 является дочерним элементом Component 3 и т. Д., Поэтому, когда дочернее состояние получает изменение, оно заставит родителя повторно выполнить рендеринг, тогда весь DOM будет повторно отображаться один раз за состояние изменить.

Заключительное примечание

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

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