Эффект, который вы получаете с [props]
как зависимость, не имеет смысла для меня. Но вы можете иметь изолированный эффект для isOpen
логического значения.
useEffect(() => {
setTimeout(() => {
setIsOpen(false);
}, 9000);
}, [isOpen]);
Вот полный рабочий пример, упрощенный:
export default function App() {
const [show, setShow] = useState(false);
useEffect(() => {
setTimeout(() => {
setShow(false);
}, 2000);
}, [show]);
return (
<div className="App">
<button onClick={e => setShow(true)}>Show</button>
{show && <div>hello</div>}
</div>
);
}