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

Как убрать лишние перерендеры?

Написал простую архитектуру на реакте, когда первый компонент рендерит второй компонент, второй рендерит третий.
компоненты функциональные. пропсов нет у компонентов. если в первом компоненте сделать локальный стейт и менять его, то запускается рендер, что логично, но второй и третий компоненты тоже перерендериваются, вопрос почему? почему реконсилинг не работает, ведь пропсы не меняются у второго и третьего компонентов, их вообще нет, но они перерендериваются?. если меняем на классовые, то это не помогает, помогает только pureComponent, хотя мы знаем, что в нем реализован shouldComponentUpdate, который сравнивает поменялись ли пропсы, но я напомню, что их нет, так же помогает обернуть второй компонент в connect.
кто шарит, можете подсказать поч происходит перерендер второго и третьих компонентов и что там такого делает коннект и pureComponent
Хотя есть идея, что пропсы это же объект, мб в этом дело, получается connect and purecomponent используют мемоизацию?
помогите разобраться
  • Вопрос задан
  • 2601 просмотр
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Frontend-разработка на React
    10 недель
    Далее
  • ProductStar
    Разработка на React
    6 недель
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 1
Robur
@Robur
Знаю больше чем это необходимо
второй и третий компоненты тоже перерендериваются, вопрос почему?

потому что так устроена логика работы реакта.
То что "пропсы не меняются" еще не значит что рендер компонента выдаст то же самое. Может у вас там таймер засунут или еще что.

Поэтому по дефолту реакт вызывает рендер всех затронутых компонентов, и если вы точно знаете что ничего не поменялось, об этом нужно сообщить, shouldComponentUpdate в pureComponent именно это и делает, но ничто вам не мешает написать свой метод. для функциональных компонент на хуках есть React.memo для той же цели.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
от 250 000 до 300 000 ₽
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Екатеринбург
от 50 000 до 90 000 ₽