Задать вопрос
@serhii328764

Когда происходит перерендеринг компонента в реакт?

Всем привет! Есть непонятные моменты по пониманию перерисовки компонентов.
В теории перерендеринг компонентов в реакте вызывается, когда:
1. Изменение внутреннего состояния компонента (this.setState);
2. Изменение свойств (props) компонента, полученных от родителя или перерисовка родителя.
Здесь непонятно. Если измениться внутренний state на самом верхнем компоненте App, то перерисуются абсолютно все компоненты ниже по дереву? А если только 1 из 10 получил изменение в передаваемые props, а для остальных входящие данные props не изменились, то все равно все перерисуются?
3. При изменение контекста. Также нужен комментарий по этому пункту. Непонятно, как может измениться передаваемый объект с данными с помощью context в ходе работы приложения? Разве перечень св-ств может на ходу поменяться?
  • Вопрос задан
  • 7351 просмотр
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Merion Academy
    Frontend-разработка на React
    4 месяца
    Далее
  • ProductStar
    React: отточите навыки интерфейсной разработки
    6 недель
    Далее
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
1. Перерисовка компонента происходит, как следствие перерисовки родителя или вызовов this.setState() или this.forceUpdate().
Ее можно контролировать в class components с помощью метода жизненного цикла shouldComponentUpdate. При вызове this.forceUpdate() shouldComponentUpdate не вызывается.

2.
Изменение свойств (props) компонента, полученных от родителя или перерисовка родителя.

Получить новые свойства без перерисовки родителя невозможно.

Чтобы дочерние компоненты не перерисовывались по цепочке, вы должны реализовывать метод shouldComponentUpdate или использовать PureComponent там, где это уместно. Перерисовку функциональных компонентов контролировать нельзя(разве с помощью HOC). Использование HOC connect убирает все лишние перерисовки дочернего компонента.

3. Провайдеры это обычные компоненты. Перерисовывается родитель - перерисовываются они.

Все, что я написал выше, кроме кейса с connect, есть в официальной документации. Стоит открыть почитать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽