Basic Syntax

useEffect(() => {
  // Side-effect logic here

  return () => {
    // Cleanup logic here
  };
}, [dependencies]);

Dependency Array

Cleanup Function

useEffect(() => {
  const timer = setInterval(() => console.log("tick"), 1000);
  return () => clearInterval(timer);
}, []);

Example: Resize Listener

useEffect(() => {
  const handleResize = () => {
    setIsMobile(window.innerWidth < 768);
  };

  window.addEventListener("resize", handleResize);
  return () => window.removeEventListener("resize", handleResize);
}, []);