diff --git a/shared/hooks/useRunOnce.ts b/shared/hooks/useRunOnce.ts index ba548dc..35205ba 100644 --- a/shared/hooks/useRunOnce.ts +++ b/shared/hooks/useRunOnce.ts @@ -1,5 +1,27 @@ import { useEffect, useRef } from "react"; +/** + * @module useRunOnce + * @description A custom React hook that ensures a callback function is executed only once + * during the component's lifecycle, even in React Strict Mode or development with hot reloading. + * + * @param {() => void | Promise} callback - The function to execute once. Can be synchronous or asynchronous. + * @returns {void} + * + * @example + * // Synchronous usage + * useRunOnce(() => { + * console.log('This runs only once'); + * initializeSomething(); + * }); + * + * @example + * // Asynchronous usage + * useRunOnce(async () => { + * const data = await fetchData(); + * setInitialData(data); + * }); + */ const useRunOnce = (callback: () => void | Promise) => { const calledRef = useRef(false);