• Empleos
  • Sobre nosotros
  • Empleos
    • Inicio
    • Empleos
    • Cursos y retos
  • Empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Contrata talento tech
    • Blog
    • Comercial
    • Calculadora de salario

0

114
Vistas
la instantánea de Firebase no obtiene el usuario actual

Estoy tratando de obtener el usuario actual en la consola pero no estoy definido en react-native. base de fuego 8.3 es. este es mi inicio de base de fuego

 import firebase from "firebase"; // import { initializeApp } from "firebase/app"; const firebaseConfig = { //api }; // Initialize Firebase const app = firebase.initializeApp(firebaseConfig); export default firebase;

este es el código de acción, que es lo mismo que los documentos en Internet

 firebase .firestore() .collection("user") .doc(firebase.auth().currentUser.uid) .get() .then((snapshot) => { if (snapshot.exists) { console.log(snapshot.data()); dispatch({ type: USER_STATE_CHANGE, currentUser: snapshot.data() }); } else { console.log("does not exist, console from action "); }

y aquí está mi código de tienda redux, que es más dudoso en mi conocimiento

 const store = createStore(Reducers, applyMiddleware(thunk)) return ( <Provider style={styles.center} store={store}> <Main/> </Provider> );

y principal.js

 function Main(props) { useEffect(() => { props.fetchUser(); }, []); if (props.currentUser == undefined) { return ( <View> <Text>No Data</Text> </View> ); } else { return ( <View> <Text>{props.currentUser.name} is logged in now !</Text> </View> ); } } const mapStateToProps = (state) => { return { currentUser: state.user.currentUser, }; }; const mapDispatchToProps = (dispatch) => { return { fetchUser: () => dispatch(fetchUser()), }; }; export default connect(mapStateToProps, mapDispatchToProps)(Main);
almost 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Mi conjetura (es difícil estar seguro de los fragmentos de código que compartió) es que el código que carga los datos de usuario de Firestore se ejecuta cuando se carga la página/aplicación, y que Firebase no ha terminado de restaurar al usuario actual cuando se ejecuta .

Cuando se carga la página o la aplicación, Firebase restaura automáticamente las credenciales de usuario del almacenamiento local. Sin embargo, esto requiere que llame al servidor (entre otros para ver si la cuenta ha sido deshabilitada), lo que puede llevar algunas veces. Mientras se lleva a cabo esta llamada, su código principal continúa y el valor de firebase.auth().currentUser es null en este punto.

Por lo tanto, si no sincroniza su código que carga el perfil de usuario con las acciones de restauración de Firebase, terminará cargando los datos demasiado pronto, cuando el usuario aún no haya vuelto a iniciar sesión.

La solución es escuchar los cambios de estado de autenticación y responder a ellos, en lugar de asumir que firebase.auth().currentUser siempre es correcto. Para ver un ejemplo de cómo hacer esto, consulte el primer fragmento de código en la documentación de Firebase sobre cómo obtener el usuario actual :

 firebase.auth().onAuthStateChanged((user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/firebase.User var uid = user.uid; // 🤞 This is where you can load the user profile from Firestore // ... } else { // User is signed out // ... } });
almost 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda