Next.jsクイズ
Server Actionで記事を作成したあと、作成した記事詳細ページへ移動させたいです。適切な処理はどれですか?
解説
正解: Server Action内でredirect(`/posts/${id}`)を呼び出すServer Actionsはサーバーで実行されるため、ブラウザ専用のuseRouterやwindowは使えません。作成後に遷移したい場合は、next/navigationのredirectをサーバー側処理の中で呼び出すことで、適切なリダイレクト応答を発生させられます。補足: 作成後に一覧や詳細ページのキャッシュを更新したい場合は、redirectの前にrevalidatePathやrevalidateTagを呼ぶ設計も検討します。A. Server Action内でuseRouter().pushを呼び出す: useRouterはClient Component用のフックで、サーバー関数内では使えません。B. Server Action内でwindow.location.hrefを変更する: windowはブラウザAPIであり、サーバー側には存在しません。C. Server ActionからURL文字列を返せばNext.jsが自動遷移する: 戻り値だけで自動遷移する仕組みではありません。D. Server Action内でredirect(`/posts/${id}`)を呼び出す: これが正解です。