Published on

useVisibilityChange Hook React

useVisibilityChange Hook React

useVisibilityChange Hook React

useVisibilityChange Code and Usage

useVisibilityChange is a hook to track changes in page visibility.

import { useState, useEffect } from "react";

const useVisibilityChange = (callback) => {
  const [isVisible, setIsVisible] = useState(true);

  useEffect(() => {
    const handleVisibilityChange = () => {
      setIsVisible(!document.hidden);
      if (callback) {
        callback(!document.hidden);
      }
    };

    document.addEventListener("visibilitychange", handleVisibilityChange);

    return () => {
      document.removeEventListener("visibilitychange", handleVisibilityChange);
    };
  }, [callback]);

  return isVisible;
};

// Usage
const VisibilityChangeExample = () => {
  const handleVisibilityChange = (isVisible) => {
    if (isVisible) {
      console.log("Page is visible.");
    } else {
      console.log("Page is hidden.");
    }
  };

  const isVisible = useVisibilityChange(handleVisibilityChange);

  return (
    <div>
      <p>Page visibility: {isVisible ? "Visible" : "Hidden"}</p>
    </div>
  );
};