Cómo apuntar a una clave cuando tengo varias claves iguales en un objeto. Si trato de apuntar a mi clave deseada, muestra un error de sintaxis.
const [modifiedNonFormData, setModifiedNonFormData] = useState({ "author": { "lastName": "", "location": { "latitude": 49.3542671, "longitude": 8.133071 }, "shippingAddress": { "postalCode": "", "name": "", "address": "", "location": { "longitude": "", "latitude": "" }, "email": "", "phone": "+14356234653" }, "phone": "+14356234653", "firstName": e.target.value },}) const phoneHandler = (e) => { let val = e.target.value setModifiedNonFormData(modifiedNonFormData => { return ( ...modifiedNonFormData, ...modifiedNonFormData.author.phone:val ) })}Estoy tratando de actualizar/modificar el valor de entrada onChange
Necesitas hacer esto en su lugar:
setModifiedNonFormData(data => { return ({ ...data, author: { ...data.author, phone: val } }) })} Debe devolver un nuevo objeto a un setter de estado en reaccionar. Una forma común de hacer esto es a través de la desestructuración de objetos. Digamos que tiene data y desea clonarlos. Tu puedes hacer:
const newData = { ...data } Esto copiaría todos los valores de los data a un nuevo objeto. Esta es también la razón por la que funciona la modificación de datos: está copiando los valores pero también configurando un nuevo valor para una propiedad:
const newData = { ...data, newProperty: newValue }Sin embargo, esta sintaxis se limita a reemplazar el valor de una propiedad. Por lo tanto, si desea modificar el valor de una propiedad en un objeto anidado, también debe usar la misma sintaxis en el interior.