Какие плюсы и минусы компонентного рендеринга в React.js?
Рендеринг и производительность
Компонентный рендеринг — модель, где UI собирается из независимых компонентов, каждый из которых сам описывает свой кусок интерфейса и перерисовывается при изменении своих данных.
Плюсы
- Переиспользование — кнопка, модалка, таблица пишутся один раз и используются везде; вырастает в дизайн-системы и UI-киты.
- Изоляция и локальность — у компонента свои state, стили и логика; баг ищется в границах компонента, а не по всему приложению.
- Композиция — сложные экраны собираются из простых блоков как конструктор; вложенность через children.
- Тестируемость — компонент рендерится в тесте изолированно с нужными props.
- Параллельная работа команды — разные люди пилят разные компоненты без конфликтов.
- Точечные обновления — перерисовывается поддерево изменившегося компонента, а не страница целиком.
Минусы
- Каскадные перерендеры — обновление родителя по умолчанию рендерит всех детей; без внимания к структуре состояния и мемоизации большие деревья тормозят.
- Оверхед абстракции — на простых страницах компонентная сетка с props/state сложнее, чем кусок HTML; риск «сверхдробления» на десятки микрокомпонентов.
- Prop drilling — данные сквозь много уровней требуют контекста или стора, это плата за изоляцию.
- Дисциплина границ — плохо выбранные границы компонентов (смешение логики и разметки, гигантские «болота») сводят плюсы на нет.
Коротко для собеседования
Плюсы компонентного рендеринга: переиспользование, изоляция состояния и логики, композиция, тестируемость, точечные обновления поддеревьев. Минусы: каскадные перерендеры без правильной структуры, prop drilling, накладные расходы абстракции и необходимость дисциплины в проведении границ компонентов.