Tengo un problema extraño con mi forma nativa de reacción (estoy usando la biblioteca formik). Tengo un formulario que tiene una entrada con enfoque automático, el usuario lee el código de barras con un lector externo y la aplicación le muestra algunos datos sobre el producto. Todo funciona bien en el primer intento, pero cuando el usuario quiere leer otro código, la validación se activa después de la navegación, lo que hace que la entrada pierda el foco, por lo que el usuario debe seleccionarlo manualmente y luego usar el lector. Mi código se ve así, su forma simple con una entrada y acción al enviar. La validación verifica si el campo está vacío, pero lo necesito solo después de enviar, no después de la navegación.
const handleSubmit = (values, {resetForm}) => { if (nextPage === pages.TOKLIS19) { dispatch(fetchPaletaSklad.request({ carovyKod: values.carovyKod, kodUzivatele, nextPage })); } else { dispatch(fetchPaleta.request({ carovyKod: values.carovyKod, nextPage })); } resetForm(); } <Formik initialValues={{carovyKod: ''}} onSubmit={onSubmit} validate={validateCarovyKod}> {({handleSubmit, handleChange, values, ...rest}) => ( <Fragment> <Text style={styles.text}>{i18n.paletaForm.carovyKod}: </Text> <Input autoFocus values={values} name="carovyKod" handleChange={(name) => {onChange(name, values); return handleChange(name);} } keyboardType={Platform.OS == 'android' ? "phone-pad" : "number-pad"} {...rest} /> <Button style={styles.button} title={i18n.paletaForm.btnOk} onPress={handleSubmit} /> <Button title={i18n.common.back} onPress={onBack()} /> </Fragment> )} </Formik>