useRouter() 没有重定向到登陆页面

问题描述 投票:0回答:1
"use client"
import { useState } from 'react';
import {auth} from '../../firebase-config'
import {createUserWithEmailAndPassword} from 'firebase/auth'
import { useRouter } from 'next/router';
const SignUp = () => {
    const [email, setEmail] = useState('');
    const [password, setPassword] = useState('');
    const handleSubmit = (e) => {
       const router = useRouter();
        
        e.preventDefault();
        // Handle form submission here (e.g., send data to server)
        createUserWithEmailAndPassword(auth , email,password)
        .then(()=>{
            setEmail('');
            setPassword('');
            router.push('/')
        }).catch((err)=>{
            throw console.log(err);
        })
    }

我使用了 useEffect hook 、 windows.location.href ,我已经重新启动了服务器,但没有任何效果。 我希望用户重定向到登陆页面,但似乎没有任何效果。

javascript firebase next.js firebase-authentication
1个回答
0
投票

在您当前的实现中,在

useRouter()
函数内部调用
handleSubmit
钩子,这可能会导致路由问题。在 Next.js 中,需要在组件的顶层调用钩子,而不是在任何回调或嵌套函数中调用。

const SignUp = () => {
    const [email, setEmail] = useState('');
    const [password, setPassword] = useState('');
    const router = useRouter();

    const handleSubmit = (e) => {
       ...
    }
...
© www.soinside.com 2019 - 2024. All rights reserved.