Tengo una pieza de estado que se ve así:
const [values, setValues] = useState({ firstName: '', lastName: '', dateOfBirth: { month: '', day: '', year: '' }, phoneNumber: '', gender: '', interests: [], language: '', medicareNumber: '' })Intento reasignar los valores de mes, día y año en el objeto dateOfBirth onChange, ¿cuál es la sintaxis para hacer esto y no sobrescribir ninguna de las otras claves en el objeto?
<input value={values.dateOfBirth.month} onChange={(e) => setValues({ ...values, dateOfBirth: { month: e.target.value } })} type='number' placeholder='MM' /> <input value={values.dateOfBirth.day} onChange={(e) => setValues({ ...values, dateOfBirth: { day: e.target.value } })} type='number' placeholder='DD' />el código anterior establece el valor de dateOfBirth en solo mes o solo día. Pero necesito que todas las claves y valores permanezcan iguales y solo cambie el valor dentro de la clave respetada.
Probar:
<input value={values.dateOfBirth.month} onChange={(e) => setValues({ ...values, dateOfBirth: { ...values.dateOfBirth, month: e.target.value } })} type='number' placeholder='MM' />O mejor, trate de no tener propiedades de estado anidadas.