Я создал функцию, которая прослушивает событие изменения размера, проверяет ширину окна и обновляет переменную IsMobile if(width‹=600 и IsMobile = false), а затем устанавливает для нее значение true и наоборот.
вот код:
import React, { useEffect, useState } from 'react';
export interface MechnicalLiftProps {
}
const MechnicalLift: React.SFC<MechnicalLiftProps> = () => {
const [IsMobile, setIsMobile] = useState(true)
const handleWindowChange = () => {
console.log('window inner width', window.innerWidth);
console.log('is mobile in handle', IsMobile);
if (window.innerWidth <= 600 && IsMobile === false) {
setIsMobile(true);
console.log('is mobile set to true');
}
if (window.innerWidth > 600 && IsMobile === true) {
setIsMobile(false);
console.log('is mobile set to false');
}
}
useEffect(() => {
console.log('mount running');
window.addEventListener('resize', handleWindowChange)
handleWindowChange()
return () => {
window.removeEventListener('resize', handleWindowChange)
}
}, [])
useEffect(() => {
console.log('is this mobile ', IsMobile);
}, [IsMobile])
return (
<div>
</div>
);
}
export default MechnicalLift;
мой консольный вывод:
я чувствую, что начальное состояние устанавливается каждый раз, когда компонент повторно отображается, иначе почему для IsMobile устанавливается значение true каждый раз при изменении окна дескриптора, даже если для него несколько раз установлено значение false. новичок в хуках, пожалуйста, разработайте свое объяснение как можно подробнее