Delayed Component to delay the render show/hide

PHOTO EMBED

Sat Dec 30 2023 21:47:04 GMT+0000 (Coordinated Universal Time)

Saved by @eziokittu

// Delayed Component to delay the render show/hide
// DelayedComponent.js
import React, { useState, useEffect } from 'react';

const DelayedComponent = ({ delayToShow, delayToHide, isDelayStart, isDelayEnd, children }) => {
  const [isVisible, setIsVisible] = useState(false);

  useEffect(() => {
    let showTimeout;

    if (isDelayStart) {
      showTimeout = setTimeout(() => {
        setIsVisible(true);
      }, delayToShow || 1000);
    } else {
      setIsVisible(true);
    }

    if (isDelayEnd) {
      const hideTimeout = setTimeout(() => {
        setIsVisible(false);
      }, (delayToHide || 5000) + (isDelayStart ? (delayToShow || 1000) : 0));

      return () => {
        clearTimeout(hideTimeout);
      };
    }

    return () => {
      clearTimeout(showTimeout);
    };
  }, [delayToShow, delayToHide, isDelayStart, isDelayEnd]);

  return <>{isVisible && children}</>;
};

export default DelayedComponent;
content_copyCOPY

https://chat.openai.com/?__cf_chl_tk