Tengo un método para actualizar el estado de mi componente, que se parece a esto:
updateObject = (field) => {
return (e) => {
const obj = _.cloneDeep(this.state.obj);
obj[field] = e.target.value;
this.setState({ obj: obj });
};
}
Me sale un error Unexpected block statement surrounding arrow body
apuntando a la primera línea. ¿Por qué no puedo tener una declaración de bloque?
Respuestas
1 para la respuesta № 1Su código es válido. Este es el comportamiento previsto de la ESLint. arrow-body-style
regla. Si return es la única instrucción dentro del cuerpo de una función de flecha, no necesita una instrucción de bloqueo.
updateObject = (field) => (e) => {
const obj = _.cloneDeep(this.state.obj);
obj[field] = e.target.value;
this.setState({ obj: obj });
}
Si desea mantener este estilo para sus funciones de flecha, puede desactivar arrow-body-style
regla.
1 para la respuesta № 2
El código correcto resultó ser bastante simple:
updateProject = (field) => (e) => {
const project = _.cloneDeep(this.state.project);
project[field] = e.target.value;
this.setState({ project: project });
}
El bloque y la declaración de retorno son redundantes.