Estoy tratando de eliminar un elemento de vuelo completo de una matriz anidada. He intentado setFieldvalue. Cada vez que encuentro una identificación específica, me gustaría eliminar todo el elemento de Formik. Por alguna razón, Internet tiene pocas soluciones, incluso en SO.
console.log("Formik", formik.values.flightsById); for (let item in formik.values.flightsById){ if(item === 'EF_700001132'){ console.log("it's here: ", item) // React.useEffect(() => () => formik.setFieldValue(item, undefined), []) //formik.values.flightsById.remove } } console.log("Formik after del: ", formik.values.flightsById);Algunos comentarios:
flightsById como una "matriz anidada", pero a juzgar por su captura de pantalla es un objetosetFieldValue() para actualizar flightsById , buen trabajo 😉if desencadenará un error porque rompe las reglas de los ganchosEF_700001132 de los flightsById , deberá clonar flightsById excepto esa clave y luego pasarla a setFieldValue() . Usé el operador rest ( ...otherFlights ) para copiarlo sin la clave, pero hay muchos otros métodos detallados en otros subprocesos de SO.Aquí hay un ejemplo de cómo eliminar un solo vuelo cuando se hace clic en un botón:
<button type="button" onClick={() => { const { EF_700001132, ...otherFlights } = formik.values.flightsById; formik.setFieldValue("flightsById", otherFlights); }} > Delete Flight EF_700001132 </button>