【发布时间】:2020-08-10 07:49:30
【问题描述】:
我制作了一个过期组件,它允许其中的内容在 x 秒后消失。它通过使用 state 和 setTimeout 来工作。
import React, { useEffect, useState } from 'react';
function Expire(props)
{
const [isVisible, setIsVisible] = useState(true);
useEffect(() =>
{
setTimer(props.delay);
}, []);
const setTimer = (delay) =>
{
setTimeout(() => setIsVisible(false), delay);
};
return (
isVisible
? <div>{props.children}</div>
: <span />
);
}
export default Expire;
我是这样用的:
<Expire delay="5000">
<Alert type={alertMsgState} size="col-md-10" />
</Expire>
但我遇到的问题是,在 5 秒后消失一次后,再次更改 alertMsgState [例如。再次提交表单,所以我想再次显示警报],消息不会重新呈现并在 5 秒后消失,就像它应该的那样。在检查时,我只看到 <span /> 元素。
请仅使用功能组件和钩子回答。
【问题讨论】:
标签: javascript reactjs react-hooks