Здравствуйте.
Приложение состоит из одного компонента, который показывает текущие размеры страницы.
Если я делаю вот так, то сразу попадаю в цикл:
let PageSize = ( ) => {
const [webPageSize, setWebPageSize] = useState(
[document.documentElement.scrollWidth,
document.documentElement.scrollHeight]
)
useEffect( ( ) => {
setWebPageSize(
[document.documentElement.scrollWidth,
document.documentElement.scrollHeight]
)
} , /* здесь надо передать второй аргумент, но не понимаю какой. на webPageSize ругается */ )
return (
<h1>{`webPageSize width is ${webPageSize[0]}. webPageSize height is ${webPageSize[1]}`}</h1>
)
}
Вопрос: можно ли передать здесь второй аргумент, чтобы не было цикла?
Вот так работает без ошибок и не ругается:
let PageSize = ( ) => {
const [webPageSize, setWebPageSize] = useState(
[document.documentElement.scrollWidth,
document.documentElement.scrollHeight]
)
function handleWindowResize() {
setWebPageSize(
[document.documentElement.scrollWidth,
document.documentElement.scrollHeight]
)
}
window.addEventListener( "resize", handleWindowResize, false)
useEffect( ( ) => {
return ( ) => window.removeEventListener("resize", handleWindowResize, false)
})
return (
<h1>{`webPageSize width is ${webPageSize[0]}. webPageSize height is ${webPageSize[1]}`}</h1>
)
}
но такое решение выглядит кривенько, по-моему.
Как правильно в такой ситуации поступить?