はじめに
Next.jsでerorr.tsx
とnot-found.tsx
のファイルを作成した際に、どちらもサーバーコンポーネントとして作成してbuildしたところ、erorr.tsx
のみuse client
ディレクティブが必要とエラーをはかれてしまいました
個人的にはuseState
、useEffect
、onClick
、onChange
等を使ってないので、サーバーコンポネントで十分なのかと思ったのですが、、、
そのため、この記事ではなぜerorr.tsx
のみクライエントコンポーネントである必要があるのかについて調べたことをまとめます
not-found.tsx
とerror.tsx
について
not-found.tsx
not-foundエラーは存在しないリソースへのリクエストだということを知らせるもののため、クライエントサイドの処理を必要としない
error.tsx
このファイルではサーバーサイドだけではなく、クライエントサイドのエラーも補足して、動作します
そのため、Next.jsのファイルの規則として、クライエントサイドでも動作することを保証する必要があるため、use client
ディレクティブを使う必要がある