/ / Función de flecha en el método de actualización React - reactjs, ecmascript-6

Función de flecha en el método de actualización React - reactjs, ecmascript-6

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 № 1

Su 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.