Mi código actual encuentra un objeto en una matriz de state , lo elimina y luego agrega un newValue en su lugar. Sé que usar .splice() muta el estado directamente, lo cual no es una práctica recomendada en React. ¿Cuál es la forma correcta de hacer lo que estoy tratando de hacer a continuación?
const found = clientServiceReferral.selectedTimeSlots.find(element => element.timeSlot === timeWithDate); if (found) { clientServiceReferral.selectedTimeSlots.splice(found, 1) } const newValue = { timeSlot: timeWithDate, value: value.value } setClientServiceReferral({ ...clientServiceReferral, selectedTimeSlots: [...clientServiceReferral.selectedTimeSlots, newValue] })Usaría el método de mapa, que devuelve una nueva matriz, para buscar y reemplazar:
const updatedTimeSlots = clientServiceReferral.selectedTimeSlots.map((element) => { if(element.timeSlot === timeWithData){ return {timeSlot: timeWithDate, value: value.value} } else { return element } }) setClientServiceReferral({ ...clientServiceReferral, selectedTimeSlots: updatedTimeSlots })