Производительность не бывает преждевременной оптимизацией, когда пользователи начинают уходить из-за тормозов интерфейса. Современные React-приложения с их сложным состоянием и богатой интерактивностью особенно уязвимы к проблемам производительности рендеринга. Разберём методы, выходящие за рамки базового использования React.memo()
и useMemo()
.
Почему React-компоненты ререндерятся чаще, чем нужно
Каждый лишний ререндер компонента тратит драгоценные миллисекунды. Основные причины ненужных ререндеров:
- Передача новых ссылок на пропсы при каждом родительском рендере
- Неинформированные хуки состояния, обновляющие компоненты, которые не зависят от изменённых данных
- Компоненты, интенсивно обрабатывающие данные во время рендера
- Глобальные обновления состояния, затрагивающие слишком большую часть дерева