1*fa03bfa6S猫头猫import {useRef, useState} from 'react'; 2*fa03bfa6S猫头猫 3*fa03bfa6S猫头猫export default function useDelayFalsy<T extends any = any>( 4*fa03bfa6S猫头猫 init?: T, 5*fa03bfa6S猫头猫 ms: number = 0, 6*fa03bfa6S猫头猫) { 7*fa03bfa6S猫头猫 const [_state, _setState] = useState<T | undefined>(init); 8*fa03bfa6S猫头猫 const timer = useRef<any>(); 9*fa03bfa6S猫头猫 10*fa03bfa6S猫头猫 function setState(st: T) { 11*fa03bfa6S猫头猫 if (st === undefined || st === null || st === false) { 12*fa03bfa6S猫头猫 timer.current = setTimeout(() => { 13*fa03bfa6S猫头猫 _setState(st); 14*fa03bfa6S猫头猫 timer.current = undefined; 15*fa03bfa6S猫头猫 }, ms); 16*fa03bfa6S猫头猫 return; 17*fa03bfa6S猫头猫 } 18*fa03bfa6S猫头猫 timer.current && clearTimeout(timer.current); 19*fa03bfa6S猫头猫 timer.current = undefined; 20*fa03bfa6S猫头猫 _setState(st); 21*fa03bfa6S猫头猫 } 22*fa03bfa6S猫头猫 23*fa03bfa6S猫头猫 return [_state, setState, _setState] as [ 24*fa03bfa6S猫头猫 ...ReturnType<typeof useState<T>>, 25*fa03bfa6S猫头猫 ReturnType<typeof useState<T>>[1], 26*fa03bfa6S猫头猫 ]; 27*fa03bfa6S猫头猫} 28