при изменении состояния блока
Есть 2 вопроса:
1) Сейчас это в одном useEffect, правильнее сделать 2? Первый для листнера resize, второй для слежения изменения data. Сейчас изменение data вызывает пересоздание обработчиков resize, как я понял, что плохо
2) Состояние data слушают так же еще и другие копмоненты (и меняют свои размеры соответственно). Мне нужно получить обновленные рефы блоков внутри handleResize, после того как они обновились. С setTimeout 0 это работает, насколько это верное решение?
useEffect(() => {
function handleResize() {
setTimeout(() => {
…
}, 0);
}
handleResize();
window.addEventListener('resize', handleResize)
return () => window.removeEventListener('resize', handleResize);
}, [data]);
попробуй использовать либу react-use, в ней хук useMedia, ты сможешь создать переменную что будет хранить текущий размер окна, поместишь ее в депсы useEffect и не нужен будет таймаут
Обсуждают сегодня