Soy nuevo en react-redux. Quiero obtener datos sobre el envío de Redux, si tengo éxito, entonces quiero navegar a otra pantalla; de lo contrario, aparecerá una alerta.
Sin embargo, estoy teniendo éxito solo después del segundo clic.
Código:
const {fetchLoginData} = props; const data = props; async function onSubmit() { fetchLoginData(phoneNo); //if i get true from fetchLoginData(phoneNo) then navigate to other screen otherwise an alert will show if(data.login) props.navigation.navigate('ScreenName') else alert("User Not Registered") }No estoy muy seguro de cómo se presenta su elemento, pero supongo que su etiqueta táctil no es lo suficientemente grande. Aquí hay un ejemplo de mí dándole una altura de 300 y un ancho de 700. Puedes hacerlo tan grande como necesites.
const GradientBtn = () => { return ( <TouchableOpacity onPress={() => onSubmit()} style={{height: 300, width: 700}}> {/* INSERT BUTTON CODE HERE */} </TouchableOpacity> ); };Esto se debe a la operación asíncrona. La verificación de data.login realizada inmediatamente después de que la función fetchLoginData() se ejecuta en el primer clic es incorrecta para el primer caso. Por lo tanto, no hay redirección con el primer clic. Cuando vuelve a hacer clic, se redirige porque el estado ya es verdadero.
Puede arreglarlo así: si la respuesta está completa en la función fetchLoginData() , será correcto redirigir.
O puedes usar esto. Puede llamar a una función de redirección en cualquier parte del componente donde se encuentre el diseño del formulario. P.ej;
<View> <Form> .... </Form> {data.login && props.navigation.navigate('ScreenName')} </View>