xref: /MusicFree/src/hooks/useOnceEffect.ts (revision 6f73e807144af9b496f38d87ede85146d6bf98f4)
1import {useEffect, useRef} from 'react';
2
3export default function useOnceEffect(
4    cb: () => (() => void) | void,
5    deps?: any[],
6) {
7    const flag = useRef<boolean>(false);
8
9    useEffect(() => {
10        let result;
11        if (flag.current) {
12            return result;
13        }
14        if (!deps || deps.every(_ => !!_)) {
15            flag.current = true;
16            result = cb();
17        }
18        return result;
19    }, deps);
20}
21