Published on

useScript Hook React

useScript Hook React

useScript Hook React

useScript Code and Usage

useScript is a hook to dynamically load an external script.

import { useState, useEffect } from "react";

const useScript = (src) => {
  const [isLoaded, setIsLoaded] = useState(false);
  const [isError, setIsError] = useState(false);

  useEffect(() => {
    const script = document.createElement("script");
    script.src = src;
    script.async = true;

    const handleLoad = () => {
      setIsLoaded(true);
    };

    const handleError = () => {
      setIsError(true);
    };

    script.addEventListener("load", handleLoad);
    script.addEventListener("error", handleError);

    document.body.appendChild(script);

    return () => {
      script.removeEventListener("load", handleLoad);
      script.removeEventListener("error", handleError);
      document.body.removeChild(script);
    };
  }, [src]);

  return { isLoaded, isError };
};

// Usage
const ScriptLoadExample = () => {
  const scriptUrl =
    "https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js";
  const { isLoaded, isError } = useScript(scriptUrl);

  if (isError) {
    return <p>Error loading script.</p>;
  }

  if (!isLoaded) {
    return <p>Loading script...</p>;
  }

  return (
    <div>
      <p>Script has been loaded and executed.</p>
    </div>
  );
};