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