окна?
Тут вроде событие есть, всё должно работать, но работает только при перезагрузке страници
useEffect(() => {
function GetWorkspaceBodySizes(){
setWorkspaceBodyWeight(workspaceBodyRef.current.clientWidth)
setWorkspaceBodyHeight(workspaceBodyRef.current.clientHeight)
}
GetWorkspaceBodySizes()
window.addEventListener('resize', GetWorkspaceBodySizes);
return(
window.removeEventListener('resize', GetWorkspaceBodySizes)
)
}, [])
он отрабатывается у вас при загрузке, вы не указали эффекту, чза чем надо следить, массив
Ой, сорри... не верно сказал. Эффект должен один раз отработать. А вот листенер на ресайз окна не реагирует
так как то, что отработало в эффекте при загрузке, дальше не отслеживается.
Так а как мне листенер тогда добавить что б он на ресайз отрабатывал?
ref ссылка и отслеживание изменений
Какой реф, когда у меня на window листенер?)
такой вариант import React, { useLayoutEffect, useState } from 'react'; function useWindowSize() { const [size, setSize] = useState([0, 0]); useLayoutEffect(() => { function updateSize() { setSize([window.innerWidth, window.innerHeight]); } window.addEventListener('resize', updateSize); updateSize(); return () => window.removeEventListener('resize', updateSize); }, []); return size; } function ShowWindowDimensions(props) { const [width, height] = useWindowSize(); return <span>Window size: {width} x {height}</span>; }
Пробовал. тоже не ворк вышло почему то(
Обсуждают сегодня