next.js에서 페이지 간 로딩
next/router를 통한 로딩 처리
next /router의 뛰어난 기능 중 하나는 경로 변경 중에 발생하는 이벤트를 활용하는 기능입니다. 이는 로드를 처리하는 데 사용할 수 있음을 의미합니다. 그렇다면 우리에게 필요한 이벤트는 무엇일까요? 경로 변경 이벤트가 필요합니다.routeChangeStart
routeChangeComplete
routeChangeError
이 세 가지 이벤트와
useEffect 및 useState를 사용하여 애플리케이션에서 각 경로 변경을 처리할 수 있습니다. 예를 들어function Loading() {
const router = useRouter();
const [loading, setLoading] = useState(false);
useEffect(() => {
const handleStart = (url) => (url !== router.asPath) && setLoading(true);
const handleComplete = (url) => (url === router.asPath) && setTimeout(() =>{setLoading(false)},2000);
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 && (
<div>loading</>
)
}
무슨 일이야?
이제 살펴볼 예제가 있습니다. 로딩 기능을 만들기 위해 우리가 무엇을 하고 있는지 이야기해 봅시다. 먼저
loading의 상태를 부울로 설정합니다. 이를 통해 로드 여부를 쉽게 전환할 수 있으며, 그런 다음 useEffect를 사용하여 확인을 강화합니다. 여기서 useEffect에는 시작을 처리하는 함수와 완료될 때 처리하는 함수가 두 개 있습니다. 그런 다음 위에서 언급한 router.events를 사용하여 실행할 함수를 결정합니다. 시작하는 경우 로드를 true로 설정하는 handleStart를 실행해야 합니다. 그렇지 않으면 완료되었으며 로딩을 false로 설정해야 합니다.마지막으로 실제로 로드 중인지 여부만 표시하는 조건부 렌더러가 있습니다.
Reference
이 문제에 관하여(next.js에서 페이지 간 로딩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/perkinsjr/page-to-page-loading-in-nextjs-3e4j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)