mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			25 lines
		
	
	
		
			658 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			658 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { createRef, useLayoutEffect } from 'react';
 | 
						|
 | 
						|
type refElement = HTMLDivElement;
 | 
						|
 | 
						|
const useLoading = (loading: boolean, selector = '[data-loading=true]') => {
 | 
						|
    const ref = createRef<refElement>();
 | 
						|
    useLayoutEffect(() => {
 | 
						|
        if (ref.current) {
 | 
						|
            const elements = ref.current.querySelectorAll(selector);
 | 
						|
 | 
						|
            elements.forEach(element => {
 | 
						|
                if (loading) {
 | 
						|
                    element.classList.add('skeleton');
 | 
						|
                } else {
 | 
						|
                    element.classList.remove('skeleton');
 | 
						|
                }
 | 
						|
            });
 | 
						|
        }
 | 
						|
    }, [loading, ref]);
 | 
						|
 | 
						|
    return ref;
 | 
						|
};
 | 
						|
 | 
						|
export default useLoading;
 |