【发布时间】:2023-03-29 20:36:02
【问题描述】:
import { useState } from 'react'
const Message = ({ variant, children }) => {
const [timeOut, setTimeOut] = useState(null)
setTimeout(() => {
setTimeOut(1)
}, 3000)
return (
timeOut !== 1 && <div className={`alert alert-${variant}`}>{children}</div>
)
}
Message.defaultPros = {
variant: 'info',
}
export default Message
我想在 2 或 3 秒后消失此警报。我使用了这个逻辑,它很好并且可以工作,但是在我的控制台中,我收到了这个警告:
警告:无法对未安装的组件执行 React 状态更新。 这是一个空操作,但它表明您的应用程序中存在内存泄漏。 要修复,请取消 useEffect 中的所有订阅和异步任务 清理功能。
它会影响我的应用还是可以?你可以给我一个更好的想法来实现这个逻辑。
【问题讨论】:
-
警报的目的是确保用户确认某些内容。您可以“确定”的方式是让用户单击关闭按钮:他/她执行了自愿交互,因此他/她一定已经看到了。几秒钟后自动关闭的警报违背了这个目的:也许用户在显示时分心了,她/他在关闭之前没有看到它。因此,如果消息非常重要,您必须确保它已被看到,警报不应在超时时关闭,如果不是,则不应使用警报,而应使用侵入性较小的通知形式。
标签: javascript reactjs react-bootstrap