React更新方法中的箭头功能

时间:2016-12-20 08:00:54

标签: reactjs ecmascript-6

我有一个更新组件状态的方法,如下所示:

updateObject = (field) => {
  return (e) => {
    const obj = _.cloneDeep(this.state.obj);
    obj[field] = e.target.value;
    this.setState({ obj: obj });
  };
}

我收到错误Unexpected block statement surrounding arrow body指向第一行。为什么我不能有块语句?

2 个答案:

答案 0 :(得分:1)

您的代码有效。 这是ESLint arrow-body-style规则的预期行为。如果return是箭头函数体内唯一的语句,则不需要块语句。

updateObject = (field) => (e) => {
   const obj = _.cloneDeep(this.state.obj);
   obj[field] = e.target.value;
   this.setState({ obj: obj });
}

如果您想为箭头功能保留此样式,可以停用arrow-body-style规则。

答案 1 :(得分:1)

正确的代码非常简单:

updateProject = (field) => (e) => {
  const project = _.cloneDeep(this.state.project);
  project[field] = e.target.value;
  this.setState({ project: project });
}

块和return语句是多余的。