intermediate
ResizeObserver
Реагируйте на изменение размеров элементов, избегая layout loops, лишних измерений и churn обработчиков resize.
ResizeObserver сообщает об изменении размера box элемента без глобального window resize. Полезен для canvas, графиков, виртуализированных панелей и компонентов, реагирующих на размер контейнера. Избегайте feedback loop, когда callback сразу меняет layout и тот же наблюдаемый размер.
const ro = new ResizeObserver((entries) => {
const { width, height } = entries[0].contentRect;
chart.resize(width, height);
});
ro.observe(container);
Браузер предупреждает о resize loop, если measure и write синхронны в callback. Для чисто адаптивных стилей проще CSS container queries.
На интервью: отличие от viewport media queries и предупреждения loop в callback.
Типовые ошибки: синхронный measure+write в callback; для стилей иногда достаточно CSS.
Компромисс: удобство против контроля — выбирайте механизм под вашу связность и бюджет производительности.
Чеклист:
- Правильный box (content vs border).
- Debounce или rAF для тяжёлой работы.
- disconnect при размонтировании.
- CSS, если нужны только стили.