31 lines
773 B
TypeScript
31 lines
773 B
TypeScript
import { useRouter } from 'next/router';
|
|
import { useEffect, useState } from 'react';
|
|
|
|
export function usePageLoading() {
|
|
const [loading, setLoading] = useState(false);
|
|
const router = useRouter();
|
|
|
|
function handleStart() {
|
|
return setLoading(true);
|
|
}
|
|
function handleComplete() {
|
|
return setLoading(false);
|
|
}
|
|
|
|
useEffect(() => {
|
|
router.events.on('routeChangeStart', handleStart);
|
|
router.events.on('routeChangeComplete', handleComplete);
|
|
router.events.on('routeChangeError', handleComplete);
|
|
|
|
return () => {
|
|
router.events.off('routeChangeStart', handleStart);
|
|
router.events.off('routeChangeComplete', handleComplete);
|
|
router.events.off('routeChangeError', handleComplete);
|
|
};
|
|
}, []);
|
|
|
|
return {
|
|
loading,
|
|
};
|
|
}
|