如何在 React 中 2 秒内隐藏元素

Posted

技术标签:

【中文标题】如何在 React 中 2 秒内隐藏元素【英文标题】:How to hide element in 2 seconds in React 【发布时间】:2021-10-30 04:30:58 【问题描述】:

我使用 Tailwind-css 和 React 并希望在 2 秒后隐藏 div 元素。 用户按下按钮,一个快餐栏会出现 2 秒,以表明建议已发送。 我使用 setTimeout 但它不是正确的变体。 Function Snackbar 获取 props 是否 snackbar 打开 (snackbar = true), snackbar 上的消息 (suggestResponse.message)如果 snackbarClose (false)

则应发送
const SnackbarResult = (
  snackbar,
  snackbarClose,
  suggestResponse,
: ISnackbarProps) => 
  if (snackbar) 
    setTimeout(() => snackbarClose, 2000);
  
  if (!snackbar) return null;
  return (
    <div className="bg-green-500 fixed right-2 bottom-1 font-medium p-2 md:p-5">
      suggestResponse.message
    </div>
  );
;

【问题讨论】:

【参考方案1】:

您应该将setTimeout 放在useEffect 中,以便在组件重新渲染或卸载时清除超时。

useEffect(() => 
  if (snackbar) 
    const timeout = setTimeout(() => snackbarClose(), 2000);
    return () => 
      clearTimeout(timeout);
    ;
  
, [snackbar]);

【讨论】:

谢谢。我怎么能忘记 useEffect!

以上是关于如何在 React 中 2 秒内隐藏元素的主要内容,如果未能解决你的问题,请参考以下文章

React Native:如何隐藏条件渲染以外的元素?

如何检查鼠标在最后 5 秒内没有移动?

在 React 中显示或隐藏元素

1110 Jquary动画

web前端鼠标放在div标签制成的盒子上如何实现图片一秒内由正方形变为圆形在变?

react中控制元素的显示与隐藏