@UfUzR64rRzYa_Question

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Error: useNavigate() may be used only in the context of a <Router> component.について

解決したいこと

サインアップが成功したらトップページへリダイレクトさせる動きを実装したいのですがエラーが発生して解決できません。どのようにしたら解決できるでしょうか…

発生している問題・エラー

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 >で囲いましたが何も変わりませんでした…

1 likes

2Answer

Comments

  1. お礼が遅れ申し訳ありません。ご回答ありがとうございます!
    あれから一旦react-router-domについて最初から調べ作り直すことでエラーを起こさず作成しきりました。
    ただ@kp047iさんのおっしゃるようにnext.jsプロジェクトなのだからuseRouterにすべきという指摘がチームから入りuseRouterで機能を作成し直しました。

記事を拝見し、ReactやuseNavigate()について非常に分かりやすく解説されていて、本当に感銘を受けました。

特に、サインアップ後のリダイレクトを実装する際に発生するエラーについて、具体的なコードや実際に試された内容まで詳しく書かれていたため、とても理解しやすかったです。今回の記事を通して、自分自身も多くのことを学ぶことができ、大変参考になりました。

突然このようなご連絡を差し上げてしまい、申し訳ございません。それほど今回の記事に興味を持ち、ぜひ一度この感想をお伝えしたいと思い、ご連絡させていただきました。

私自身もWeb開発を主業としている開発者として活動しておりますので、今回の記事を拝見して、ぜひ今後何かの機会に一緒にお仕事をしたり、開発面でコラボレーションさせていただけたらと思いました。

また、この記事の内容やReact、Web開発についても、もし機会がございましたら、ぜひいろいろと意見交換やお話をさせていただければ嬉しく思います。

このたびは、とても参考になる素晴らしい記事を共有していただき、本当にありがとうございました。

今後、何か一緒に取り組める機会がございましたら、ぜひご連絡いただけますと幸いです。
どうぞよろしくお願いいたします。

0Like

Your answer might help someone💌