Soy bastante nuevo en reactjs y javascript, por lo que no estoy seguro de la sintaxis correcta.
Quiero usar el operador de propagación para actualizar un objeto, pero en lugar de codificar el nombre del campo, quiero que sea una variable, pero lo lee como un nombre de campo en lugar de tomar el valor de la variable como el nombre del campo.
Por ejemplo, Esta es mi variable:
let [obj, setObj] = useState({'title': '', 'body': ''})Lo actualizo así:
const onChangeCallBack(field, value){ if(field === 'body'){ setObj(obj => ({...obj, 'body': value})) }else if(field === 'title'){ setObj(obj => ({...obj, 'title': value})) } }Quiero actualizar algo como esto en su lugar:
const onChangeCallBack(field, value){ setObj(obj => ({...obj, field: value})) // This doesn't work setObj(obj => ({...obj, {field}: value})) // This doesn't work either }Entonces, ¿hay alguna manera de especificar que el campo es una variable para tomar su valor como el nombre de la variable?
setObj(obj => ({...obj, [field]: value}))Use corchetes para usar claves dinámicas.
Debe envolver claves dinámicas con corchetes cuadrados de esta manera:
{ [myDynamicKey]: value }Más sobre el tema aquí: Creación de objetos con claves dinámicas