You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			26 lines
		
	
	
		
			589 B
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			26 lines
		
	
	
		
			589 B
		
	
	
	
		
			TypeScript
		
	
import React from 'react';
 | 
						|
 | 
						|
export const useInterval = (callback: any, delay: number | null) => {
 | 
						|
  const savedCallback = React.useRef<any>();
 | 
						|
 | 
						|
  React.useEffect(() => {
 | 
						|
    savedCallback.current = callback;
 | 
						|
  }, [callback]);
 | 
						|
 | 
						|
  React.useEffect(() => {
 | 
						|
    function tick() {
 | 
						|
      if (savedCallback && savedCallback.current && savedCallback.current) {
 | 
						|
        savedCallback.current();
 | 
						|
      }
 | 
						|
    }
 | 
						|
    if (delay !== null) {
 | 
						|
      const id = global.setInterval(tick, delay);
 | 
						|
      tick();
 | 
						|
      return () => {
 | 
						|
        global.clearInterval(id);
 | 
						|
      };
 | 
						|
    }
 | 
						|
    return;
 | 
						|
  }, [delay]);
 | 
						|
};
 |