Next.jsで作成したアプリ内でreact router domのuseNavigateを利用しているためと考えられます。Next.jsではルーティングの役割をNext.js自体が提供しています。
next/linkとreact-router-domの違いを調べてみた
Next.jsが提供するuseRouterを利用するといいと思います。
Routing: Linking and Navigating | Next.js
Like!
サインアップが成功したらトップページへリダイレクトさせる動きを実装したいのですがエラーが発生して解決できません。どのようにしたら解決できるでしょうか…
Error: useNavigate() may be used only in the context of a <Router> component.
> 17 | const navigate = useNavigate();
"use client";
import Head from "next/head";
import { Box, Button, Text, Input } from "@chakra-ui/react";
import { useState } from "react";
import { useNavigate } from "react-router-dom";
import { updateProfile, createUserWithEmailAndPassword } from "firebase/auth";
import { auth } from "../firebase";
function SignUp() {
const [formData, setFormData] = useState({
name: "",
email: "",
password: "",
});
const { name, email, password } = formData;
const navigate = useNavigate();
const onChange = (e) => {
setFormData({
...formData,
[e.target.id]: e.target.value,
});
};
const onSubmit = async (e) => {
e.preventDefault();
try {
const userCredential = await createUserWithEmailAndPassword(
auth,
email,
password
);
updateProfile(auth.currentUser, {
displayName: name,
});
navigate("/");
} catch (error) {
console.log(error);
}
};
return (
略
);
}
export default SignUp;
< Router >で囲めと言われているのでtopのDOMを< Router >で囲いましたが何も変わりませんでした…
Next.jsで作成したアプリ内でreact router domのuseNavigateを利用しているためと考えられます。Next.jsではルーティングの役割をNext.js自体が提供しています。
next/linkとreact-router-domの違いを調べてみた
Next.jsが提供するuseRouterを利用するといいと思います。
Routing: Linking and Navigating | Next.js
@UfUzR64rRzYa_Question
Questionerお礼が遅れ申し訳ありません。ご回答ありがとうございます!
あれから一旦react-router-domについて最初から調べ作り直すことでエラーを起こさず作成しきりました。
ただ@kp047iさんのおっしゃるようにnext.jsプロジェクトなのだからuseRouterにすべきという指摘がチームから入りuseRouterで機能を作成し直しました。