import { useEffect, useRef } from "react";

export default function useOnceEffect(
    cb: () => (() => void) | void,
    deps?: any[],
) {
    const flag = useRef<boolean>(false);

    useEffect(() => {
        let result;
        if (flag.current) {
            return result;
        }
        if (!deps || deps.every(_ => !!_)) {
            flag.current = true;
            result = cb();
        }
        return result;
    }, deps);
}