오류 발생 시 미리 만들어둔 오류페이지를 보여주는 것
에러가 발생한 대상과 같은 위치에 에러가 발생했을 때 보여줄 페이지 컴포넌트인 error.tsx(jsx)를 만들어준다. (하위 폴더까지 적용)
"use client"
import { useEffect } from "react"
import { useRouter } from "next/navigation";
export default function Error({error, reset,} : {error:Error; reset:()=> void;}) {
useEffect(() => {
console.error(error.message)
},[error])
const router = useRouter();
return (
<div>
<h3>오류가 발생했습니다.</h3>
<button onClick={()=> reset()}>다시 시도</button> // 해결안될 수도 있음
<button onClick={()=> {
router.refresh(); //현재 페이지에 필요한 서버 컴포넌트들을 다시 불러옴
reset(); // 에러 상태를 초기화, 컴포넌트들을 다시 랜더링
}}>다시 시도</button>
</div>
)
}
상태 업데이트나 UI 전환이 비동기적이고, 덜 중요한 작업으로 처리되도록 만들어 주는 API
콜백 함수를 인수로 전달받아 콜백함수 안에 ui를 변경시키는 작업을 일괄적으로 실행