Intento persistir en el estado de la tienda redux con el usuario actual de Firebase Auth . Cuando intento acceder a auth.currentUser, obtengo un valor nulo y creo que se debe a que la información de currentUser se carga de forma asíncrona. Lo que quiero es hacer que mi aplicación espere hasta que obtenga el usuario actual y luego cargar el usuario actual dentro de la tienda redux para acceder a él en mi aplicación.
Tienda.js
import { auth } from "../firebase" const preloadedState = { account: auth.currentUser } export const store = createStore( reducers, preloadedState, composeEnhancers(applyMiddleware(thunk)), )base de fuego.js
// Initialize Firebase const app = initializeApp(firebaseConfig); const auth = getAuth(app);¿Cómo debo esperar a que se obtenga currentUser y luego cargar dentro de la tienda redux para mantener al usuario autenticado?
De acuerdo con la documentación , se supone que debe usar un observador de estado de autenticación para recibir una devolución de llamada cuando cambia el estado del usuario. Puedes usar esta información para actualizar tu tienda. (No piense en esto como "esperando" información; usted responde a los cambios de estado cuando ocurren).
Adjunte el observador mediante el método onAuthStateChanged. Cuando un usuario inicia sesión correctamente, puede obtener información sobre el usuario en el observador.
import { getAuth, onAuthStateChanged } from "firebase/auth"; const auth = getAuth(); onAuthStateChanged(auth, (user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/firebase.User const uid = user.uid; // ... } else { // User is signed out // ... } });