Tal vez estoy colocando el segundo router.replace('/contact'); línea en la posición incorrecta? Aunque eso no tiene sentido dado que la redirección funciona bien cuando un usuario inicia sesión. Cualquier ayuda es muy apreciada.
if (isLogin) { const result = await signIn('credentials', { redirect: false, email: enteredEmail, password: enteredPassword, }); if (!result.error) { // set some auth state router.replace('/contact'); } } else { try { const result = await createUser(enteredEmail, enteredPassword); console.log("hi"); console.log(result); router.replace('/contact'); } catch (error) { console.log(error); } }}
Así es como lo hago en React:
import { useHistory } from "react-router-dom"; const Example = () => { let history = useHistory(); //inside function: try { const result = await createUser(enteredEmail, enteredPassword); history.push('/'); //route you want here, } ... }No sé mucho sobre Next. En caso de usar solo React, suponiendo que haya un botón para verificar las credenciales, usaría el enlace de 'react-router-dom' para envolver el botón de esta manera:
<Link to={`/${redirect}`}> <Button onClick={handleSubmit(email, password)}> Submit </Button> </Link>Declarar estado de redirección:
const [redirect, setRedirect] = React.useState('contact');Declare la función handleSubmit:
const handleSubmit = (enteredEmail, enteredPassword) => { const result = await signIn('credentials', { redirect: false, email: enteredEmail, password: enteredPassword, }); if (!result.error) { setRedirect('contact'); } else setRedirect('user'); }