Utilizo un estado redux dentro de la devolución de llamada de autenticación de firebase onAuthStateChanged como esta
... const authUser = useSelector(state => state.authUser) console.log(authUser.status) useEffect(() => { const unsubscribe = onAuthStateChanged(auth, () => { console.log(authUser.status) if (authUser.status === 'loading') { dispatch(updateStatus('loaded')) } return () => unsubscribe() }, []); ...Primero se registró
cargando
cargando
luego, después de iniciar sesión, el estado de autenticación cambió y se registró
cargado
cargando
El estado inicial del estado es loading . Cada vez que cambie el estado de autenticación, llamará a la función de devolución de llamada. El valor de estado dentro de la devolución de llamada siempre se está loading , incluso si su valor en la tienda ha cambiado a loaded . ¿Por qué no cambia su valor en la devolución de llamada?
Después de leer esta explicación de Dan , supe que los estados, los accesorios nunca cambiarán dentro de un cierre. Para lograr la lógica que quería, simplemente reescriba la lógica de actualización dentro de createSlice
... updateStatus: (state, action) => { if (state.auth.status === 'loading') { state.auth.status = 'loaded' } } ...