I send pieces of code that involve a field array in formik, the issue is the following: on the one hand the buttons to add and delete fields work correctly, on the other hand the text boxes they work since you can enter data in them but when the form is submitted, this data entered in the text boxes contained in a fieldarray is not sent, thanks for now.
Initial values of the form
const formik = useFormik({
initialValues: {
no_doc: '',
apellido: '',
nombre: '',
fec_nac: '',
sexo: '',
domicilio: '',
no_tel: '',
email: '',
obra_soc: '',
no_obra_soc: '',
plan_obra_soc: '',
fec_prot: Date.now.toString(),
medico: '',
diagnostico: '',
medicacion: '',
practicas_solicitadas: '',
practica_s: [
{
cod_ana: '',
autorizada: '',
obra_soc:''
}]
},
onSubmit: (data) => {
// setFormData(data);
setShowMessage(true);
console.log(data);
formik.resetForm();
}
});
Formik FieldArray code
<FormikProvider value={formik}>
<FieldArray name='practica_s'>
{({push, remove, Formik }) => (
<React.Fragment>
{formik.values.practica_s.map(( practica_s , index) => (
<Grid container item>
<Grid item>
<Field name={`practica_s[${index}].cod_ana`}
id="practica_s.cod_ana"
component= {Autocomplete}
sx={{ width: 300 }}
autoHighlight
value= {practicas.cod_ana}
options={practicas}
getOptionLabel={(option) => option.nom_ana}
renderInput={(params) => <TextField {...params} label="Practica" />}/>
</Grid>
<Grid item>
<Field name={`practica_s[${index}].autorizada`}
id="autorizada"
component= {TextField}
label= "Autorizada ?" />
</Grid>
<Grid item>
<Field name={`practica_s[${index}].obra_soc`}
id="obra_soc"
component= {TextField}
label= "Obra Social" />
</Grid>
<Grid item>
<Button onClick={() => remove(index)}>Delete</Button>
</Grid>
</Grid>
))}
<Grid item>
<Button type='button' onClick={() => push({cod_ana:'', autorizacion:'', obra_soc:''})}>Add</Button>
</Grid>
</React.Fragment>
)}
</FieldArray>
</FormikProvider>