import { useRef, useCallback } from 'react'; import { useDidHide } from '@tarojs/taro'; export function useSafeTimeout() { const timers = useRef[]>([]); const safeSetTimeout = useCallback((fn: () => void, ms: number) => { const id = setTimeout(() => { timers.current = timers.current.filter((t) => t !== id); fn(); }, ms); timers.current.push(id); }, []); const clearAll = useCallback(() => { timers.current.forEach(clearTimeout); timers.current = []; }, []); useDidHide(() => clearAll()); return { safeSetTimeout, clearAll }; }