MENU

【Next.js】リダイレクトでハマったこと

やりたいこと

クライアントサイドでリダイレクトを使いたかったがエラーが出たので、その対処をする。
下記のコードを実施すると、エラーが発生。
Error: No router instance found.
You should only use "next/router" on the client side of your app.
"use client"
import Router from 'next/router';

export default function SignIn() {
  const router = useRouter();

  async function handleSubmit(e) {
    e.preventDefault();

    try {
      router.push('/'); 
    } catch (error) {
      console.error("Error adding document: ", error);
    }
redirectも使ってみたが、うまく行かず。
ちなみに、redirectはtryの中に入れるとうまく動かないらしいです。ちなみに。
Error: NEXT_REDIRECT
"use client"
import { redirect } from "next/navigation"

export default function SignIn() {
 

  async function handleSubmit(e) {
    e.preventDefault();

    redirect("/")
    // try {
    //   // サインアップ後のリダイレクト
    // } catch (error) {
    //   console.error("Error adding document: ", error);
    // }
  }

解決方法

next/router → next/navigation (2023/12)

参照リンクから以下の方法で対応。
Next.jsにおける、CSRとSSRの理解が足りてないため、現状は理解するところまで落ちていない。
が、おそらくNext13の変更にともなって変更になったと思われる。
これでsignuo完成しました。
深いぜ・・・。
"use client"
import { useRouter } from "next/navigation";

export default function SignIn() {
  const router = useRouter();

  async function handleSubmit(e) {
    e.preventDefault();

    try {
      // サインアップ後のリダイレクト
      router.push('/'); 
    } catch (error) {
      console.error("Error adding document: ", error);
    }

参考

参考ページ
https://chakkun1121.github.io/blog/20230823-nextDedirect
https://zenn.dev/panda_program/scraps/6c66f160636969

以下おまけ
https://zenn.dev/hamo/articles/31133919b987b9
https://qiita.com/TaikiTkwkbysh/items/3a353b306b2eabd5205e
https://zenn.dev/uttk/articles/4649e49f1e6628
https://chaika.hatenablog.com/entry/2021/06/23/083000
https://qiita.com/ke_na/items/ee6a6edd24847c616b62

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次