Estoy usando useReducer y context para actualizar mi estado en App.js y luego envié datos a la base de datos, pero no publica un nuevo estado actualizado y siempre envía un estado no actualizado.
Aplicación.js
import AuthContext from './context'; import screenA from './screenA'; export default function App() { const initialLoginState = { email: null, }; const loginReducer = (prevState, action) => { switch (action.type) { case 'Email': return { ...prevState, email: action.Email, }; } }; const authContext = React.useMemo( () => ({ email: emailUser => { dispatch({type: 'Email', Email: emailUser}); }, signIn: async () => { try { fetch('FakeApi', { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify({ email: loginState.email, date: '2021-9-20', }), }); } catch (e) { console.log(e); } }, }), [], ); const [loginState, dispatch] = React.useReducer( loginReducer, initialLoginState, ); return ( <AuthContext.Provider value={authContext}> <screenA /> </AuthContext.Provider>Contexto de cita en bloque
Creo un componente de contexto separado
contexto.js
import React from 'react'; export const AuthContext = React.createContext();Pantalla de cita en bloqueA
En la pantalla A, uso el correo electrónico e inicio de sesión para enviar datos a App.js y luego guardo estos datos en la base de datos.
pantallaA.js
import {AuthContext} from './context'; function screenA() { const {email,signIn} = React.useContext(AuthContext); return ( <View style={{marginTop: 150}}> {/* Count: {state.count} */} <Button title="sent email" onPress={() => { email('example@gmail.com'); }} /> <Button title="signIn" onPress={() => { signIn(); }} /> </View> ); } export default screenA;