Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

797
Visualizações
¿Exportando una variable booleana que depende de una declaración if (React JS y Firebase)?

Estoy tratando de declarar un booleano de mi archivo de configuración firebase.js que depende de una declaración if-else que verifica si un usuario inició sesión o no.

Quiero almacenar el estado de inicio de sesión de un usuario en una variable booleana y exportar esa variable a través de diferentes componentes en mi aplicación React.

Entonces, si el usuario inició sesión, quiero que mi variable isLoggedIn sea verdadera y exporte eso. Pero quiero que el booleano isLoggedIn se actualice según el estado de inicio de sesión antes de que se exporte.

Aquí está mi archivo firebase.js

 import { initializeApp } from 'firebase/app'; import { getAuth } from "firebase/auth"; const firebaseConfig = { //private keys }; const app = initializeApp(firebaseConfig); export const auth = getAuth(app); //Problem let isLoggedIn = false; function checkLoggedInStatus() { if (auth.currentUser !== null) { //ie user is signed in isLoggedIn = true; } return isLoggedIn; } checkLoggedInStatus(); export isLoggedIn;
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Hay (al menos) dos problemas aquí.


Lo que sigue inmediatamente a export puede ser, entre otras cosas:

  • Una declaración seguida de un nombre de variable (p. ej. export let foo = 5; ) - esto inicializa la variable y la exporta desde el módulo en una sola línea
  • function o class - similar a la anterior
  • default , si quieres indicar que lo que estás exportando es la exportación por defecto
  • Corchetes, si está exportando identificadores que ya han sido declarados, por ejemplo, export { foo }

Pero hacer export isLoggedIn; es una sintaxis inválida: no entra en ninguna de esas categorías (ni en ninguna de las otras construcciones permitidas).


El otro problema es que es posible que la propiedad .currentUser aún no exista si la autenticación no se ha inicializado. Asegúrate de esperar a que se haga primero. Utilice la versión de observador en su lugar .

Dado que es asíncrono, tiene algunas opciones para llevar esa información al resto de su secuencia de comandos. El primero, que recomendaría, es hacer que este módulo de autenticación llame al resto de su secuencia de comandos (en otras palabras, haga de este módulo su punto de entrada, o cerca de él). Por ejemplo:

 import { initializeApp } from 'firebase/app'; import { getAuth, onAuthStateChanged } from "firebase/auth"; import { renderApp } from './renderApp'; const firebaseConfig = { //private keys }; const app = initializeApp(firebaseConfig); const auth = getAuth(app); onAuthStateChanged(auth, (user) => { if (user) { renderApp(user); } else { // No user renderApp(); } });

donde renderApp es el punto de partida para el resto de su código que depende del usuario. No puede exportar fácilmente isLoggedIn directamente desde el módulo Firebase porque se recupera de forma asíncrona: llamar a renderApp con él y luego pasar el valor es la mejor manera de hacerlo.

También puede exportar una Promesa desde este script del módulo Firebase, uno que resuelve si el usuario ha iniciado sesión o no, pero eso requerirá que todos los consumidores del módulo tengan que llamar a .then sobre el valor antes de poder usarlo. , que podría ser bastante desordenado. Es mejor usar la secuencia de comandos del módulo Firebase como punto de entrada y solo llamar al resto de la secuencia de comandos una vez que el objeto de autenticación haya terminado de cargarse.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda