[英]React Hooks, setTimeOut to set State to false
我有这种情况
const [showAlertLink, setShowAlertLink] = useState(false);
const handleClick = () => {
setShowAlertLink(true);
};
<Button disableRipple onClick={handleClick}>
{!!showAlertLink && <Alert icon={<CheckIcon fontSize="inherit" />} onClose={() => setShowAlertLink(false)}>{t(`alert_link_copied`)}</Alert>}
目前,如果我点击图标,我可以关闭警报。 例如,如何使用SetTimeout
持续时间 2 秒自动关闭此警报?
您可以使用useEffect
:
useEffect(() => {
let timeout
if (showAlertLink) {
timeout = setTimeout(() => setShowAlertLink(false), 2000);
}
return () => clearTimeout(timeout);
}, [showAlertLink]);
它将在showAlertLink
值更改时触发。 如果为true
,它将设置超时以在 2 秒内将其设置为假( 2000
)。
请注意,您始终返回效果以清除超时(以确保您不会tried to update state of an unmounted component
)错误。
如果您使用的是 typescript,您可以像这样键入timeout
:
let timeout: ReturnType<typeof setTimeout>;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.