Я думаю, что вы хотите что-то более похожее на это:
export function createPopup(content, popupType) {
const [visible, setVisible] = useState(true);
useEffect(() => {
setTimeout(() => setVisible(false), 3000);
}, []);
return (
<>
{visible &&
<PopupMolecule type={popupType}>
{content}
</PopupMolecule>
}
</>
)
}
Здесь все еще есть некоторые улучшения, которые необходимо сделать (например, исчезновение при выходе или некоторый переход, и способ настройки можно изменить).не используйте его более одного раза), но это должно решить указанную вами проблему.
Это покажет ваше всплывающее окно в течение трех секунд при монтировании, затем сделает ваше всплывающее окно невидимым и размонтирует его из DOM.Пустой массив в хуке useEffect
позволяет ему сработать только при монтировании (и отключить, если вы вернете значение).Вам также не нужны другие переменные состояния, которые вы не обновляете.Они могут быть просто переданы в качестве параметров функции.