ShadowOfCasper
@ShadowOfCasper
Middle User Interface Web Developer

Почему при обновлении стейта родителя дочка ререндерится вместо обновления?

Не могу понять логику работы обновлений реакта.
Если вкраци описывать кейс - есть первоначальная настройка в системе, интерфейс которой я пишу.
Есть родитель с лэйаутом, который запрашивает всю инфу и делится на 2 части - 2 запроса. Это визард настройки (он идет первым запросом и содержит текущий статус настройки) и область со скроллбаром, компонент в которой рендерится по роуту. По роуту так же определяется 2й запрос, уходящий после получения ответа на состояние визарда от корня, который полученный ответ пропом прокидывает в дочку.
При обновлении стейта родителя - по инициализации всех этих запросов стейт обновляется трижды (2 запроса и одно условное обновление начального стейта в зависимости от полученных данных).
Каждый раз по каждому обновлению рендерящийся по роуту компонент маунтится по новой. Почему так происходит? Почему бы ему просто не обновиться? У меня при инициализации componentDidMount в первом компоненте пути исполняется 4 раза, КАРЛ, 4! Как с этим жить? Вернее как это исправить?
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 1
@camelCaseVlad
Попробуйте использовать данный пакет - https://github.com/welldone-software/why-did-you-render , напишите, если воспользуйтесь и получится найти проблему, мне будет интересно.

Использовал ее в текущем проекте, где ВДЮР подсказал, что нужно было вылечить Апп компонент в приложении.

5dc9713a718a2992303983.png

Стало

5dc97145765e4111874250.png
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы