1234567891011121314151617181920212223242526 |
- import { useRef } from 'react';
- import useWillUnmount from './useWillUnmount';
- import useMounted from './useMounted';
- /**
- * Returns a controller object for setting a timeout that is properly cleaned up
- * once the component unmounts. New timeouts cancel and replace existing ones.
- */
-
- export default function useTimeout() {
- var isMounted = useMounted();
- var handle = useRef();
-
- var clear = function clear() {
- return clearTimeout(handle.current);
- };
-
- useWillUnmount(clear);
- return {
- set: function set(fn, ms) {
- if (!isMounted()) return;
- clear();
- handle.current = setTimeout(fn, ms);
- },
- clear: clear
- };
- }
|