Así es como se ve mi código:
function Header() { const [{ user }, dispatch] = useStateValue(); const [isLoggedIn, setIsLoggedIn] = useState(false); const navigate = useNavigate(); let buttonHit = false; const handleAuth = () => { auth.onAuthStateChanged((authUser) => { if (authUser) { console.log("sume else"); auth.signOut(); } else { console.log("sum"); navigate('/Login'); } }); } return ( <Navbar className="navbar" bg="dark" variant="dark" expand="lg"> <Link className="navbar-brand" to='/'><Navbar.Brand>Scythe's Sweet Treats</Navbar.Brand></Link> <Navbar.Toggle aria-controls="main-navbar" /> <Navbar.Collapse id="main-navbar"> <Nav className="mr-auto"> <Link to='/' className="nav-links">Home</Link> <Link to='/Products' className="nav-links">Products</Link> <Link to='/About' className="nav-links">About</Link> <Link to='/Gallery' className="nav-links">Gallery</Link> <Link to='/ContactUs' className="nav-links">Contact Us</Link> </Nav> <Nav className="ms-auto"> {(user) ? user.uid === 'TirT8syQ6jdbaFPTC0So2HLlsie2' ? <Link className="nav-links" to='/Admin'>Admin</Link> : <Link to='#' className="d-none"></Link> : null} <Link className='nav-links' to='#'>Hello, {!user ? 'Guest': user.email}</Link> <Link onclick={() => handleAuth()} to="#" className="nav-links">{user ? 'Sign Out' : 'Sign In'}</Link> </Nav> </Navbar.Collapse> </Navbar> ) }He tenido el problema de que cuando inicio sesión, el onclick se activa inmediatamente y cierra la sesión del usuario, así que lo cambié porque leí un stackOverflow con el mismo problema. Pero cambiándolo a {function() {handleAuth()} } o {() => {handleAuth()}} o {() => handleAuth()}
Estoy cerrando esto ahora porque encontré una solución alternativa, pero el problema era que cuando hacía onClick={handleAuth} se activaba tan pronto como se cargaba la página y cerraba la sesión del usuario, pero cuando lo hacía onClick={() => handleAuth()} no hizo nada, ni siquiera aparecían console.logs. Mi trabajo terminó siendo usar un enlace y to="loginRedirect" para crear una página que verifique si hay un usuario y maneje el inicio/cierre de sesión por sí solo. Pero con eso estaba teniendo el mismo problema en el que cerraría la sesión del usuario de inmediato. Terminé usando window.location.replace en lugar de useNavigate por este motivo. Lea el otro comentario para ver por qué navegar no funcionó.
Editar: Olvidé que no puedes simplemente cerrar una pregunta en stackoverflow lmao