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