반응형
에러원인 및 해결책
기능을 추가하고 다시 빌드하는 중 갑자기 빌드 에러가 발생하였다.
해당 에러가 발생하는 이유는 useSearchParams() 가 클라이언트 컴포넌트에서 동작하는데, 보통 빌드 과정을 거치는 동안에는 자바스크립트 파일을 다운로드 하기 전 까지는 해당 훅을 사용하는 페이지 전체는 빈 페이지가 된다. 따라서 이 문제를 해결하기 위해 데이터 페칭이될 때 까지 대기하는 Suspense 컴포넌트로 감싸주어야 한다.
현재 나의 컴포넌트는 사용자가 비밀번호 찾기 시 입력하는 form 을 하나의 컴포넌트로 구성하고 있다. 즉, Suspense 를 적용하려면 해당 컴포넌트를 감싸주어야 한다.
// Form 컴포넌트
'use client'
import { useRouter, useSearchParams } from 'next/navigation'
export default function ResetPage() {
const path = useSearchParams()
return (
<form
ref={formRef}
className="backdrop-blur-[5px] shadow-[inset_0_0_0_1px_rgba(255,255,255,0.1)] bg-transparent max-w-[600px] w-full h-[370px] p-[10px] rounded-[5px] absolute left-[50%] top-[50%] translate-x-[-50%] translate-y-[-50%]"
action={postResetPassAction}
>
<h2 className=" text-[1.5em] text-center my-[0.6em] mb-[0.8em] font-bold text-white">
비밀번호 재설정
</h2>
</form>
}
}
따라서 다음과 같이 Suspense 컴포넌트를 ResetForm 컴포넌트에 감싸주면 해결된다.
import { Suspense } from 'react'
export default function RestPage() {
return (
<Suspense>
<ResetForm/>
</Suspense>
)
}
참고자료
NextJS 공식문서 및 스택오버플로우
반응형
'넥스트' 카테고리의 다른 글
NextJS 개발 서버에서 메모리 사용량이 80%를 넘었다. (0) | 2024.04.20 |
---|---|
[NextJS] 서버 컴포넌트에서는 어떻게 쿼리 파라미터를 읽을 수 있을까요? (0) | 2024.04.09 |
[NextJS] NextJS(14.1) | Warning: Extra attributes from the server: style 해결 방법과 팁 (0) | 2024.03.07 |
[NextJS]파비콘이 정상적인 경로에 위치함에도 업데이트가 되지 않는다면? (0) | 2024.02.28 |
[NextJS] 번들 분석도구 설정 및 사용법 (0) | 2024.02.07 |