Согласно @forret и @colinux, я не должен проверять изменение состояния, но реакцию этого изменения состояния.
Это был полный код:
const Avatar = (props) => {
const [hovered, setHovered] = useState('');
return (
<div className="user-avatar-wrapper">
<div
className="placeholder"
onClick={() => {
setHovered(true);
}}
/>
{hovered &&
<div className="my-hidden-element">
...something
</div>
}
</div>
)
}
Тогда вместо того, чтобы проверять "зависание", я должен проверить, отображается ли сейчас .my-hidden-element.