Estoy creando una función de inicio de sesión con reaccionar y base de fuego, quiero llamar a dos funciones más para completar el registro, intenté hacer
const signUpSubmit = (e,closeSignUpCard,openSignInCard) => { e.preventDefault(); const email = e.target.email.value; const password = e.target.password.value; signInWithEmailAndPassword(auth, email, password) .then(() => { closeSignUpCard(); openSignInCard(); } .catch((error) => { alert(error.message); }); };pero muestra error:
closeSignUpCard is not defined openSignInCard is not defined¿Hay alguna otra manera de hacer esto? por cierto, estoy usando firebase:^9.1.0
Puede convertir su función signUpSubmit en una función asíncrona y simplemente esperar a que finalicen las promesas internas. De esta manera, no necesita entrar en un infierno de devolución de llamada y aún sucederán cosas después de los eventos en los que tiene algún tipo de control.
Además, si la función openSignInCard debe ejecutarse después de la función closeSignUpCard , puede convertirlas en funciones asíncronas y usar esperar antes de que se llamen, de modo que la siguiente solo se llame después de que finalice la primera.
Recuerde tener cuidado de no usar demasiados awaits. Ya sabes, a los usuarios no les gusta esperar demasiado
const signUpSubmit = async (e, closeSignUpCard, openSignInCard) { e.preventDefault() const email = e.target.email.value const password = e.target.password.value const signIn = await signInWithEmailAndPassword(auth, email, password) .then(r => { return { success: true } }) .catch(e => { return { success: false, error: e.message }) if ( signIn.success ){ closeSignUpCard() openSignInCard() } else { alert(signIn.error) } }