Symtoms

setTimeout in useEffect doesn't work properly

Cause

useEffect is executed when render all page

Solution

useRef as pure js object - it is stable regardless of rerendering

const timeout = React.useRef();
React.useEffect(() => {
        timeout.current = setTimeout(() => {
            doSomething...
        }, 1500);
        return () => {
            clearTimeout(timeout.current);
        }
}, [someArr]};