【问题标题】:React esLinter errors reported报告 React esLinter 错误
【发布时间】:2017-04-11 15:25:39
【问题描述】:

我有代码:

    render() {
    const self = this;
//error on this line        const options = self.props.options.map(function (option) {
     return (
       <option
      key={option[self.props.optionValue]}
      value={option[self.props.optionValue]}
    >
      {option[self.props.optionLabel]}
    </option>
  );
});
return (
  <DropDownSimpleStyled
    closeStatus={this.state.closeStatus}
    value={this.getValue}
    onChange={this.handleChange}
    onClick={this.changeCloseStatus}
  >
    {options}
  </DropDownSimpleStyled>);

}

我收到错误:

消息:'意外的函数表达式。 (首选箭头回调)'

message: '缺少函数表达式名称。 (功能名称)'

来源:“eslint”

这是什么意思?我应该如何重写代码以符合eslinter 标准?我错过了什么吗?

【问题讨论】:

    标签: reactjs eslint


    【解决方案1】:

    首选箭头符号:http://eslint.org/docs/rules/prefer-arrow-callback

    const options = self.props.options.map(function (option) {
      [...]
    });
    

    被替换为:

    const options = self.props.options.map((option) => {
      [...]
    });
    

    或者在处理 SINGLE 语句时(注意隐含的return):

    const options = self.props.options.map(option => (
      <option
        key={option[self.props.optionValue]}
        value={option[self.props.optionValue]}
      >
        {option[self.props.optionLabel]}
      </option>
    ));
    

    关于箭头函数符号最佳实践的更深入解释:https://github.com/airbnb/javascript#arrow-functions

    它会纠正这两个问题,因为箭头函数总是匿名的。

    http://eslint.org/docs/rules/func-names 要求您为函数命名,因此您必须命名它而不是 function(option) {},例如函数 function mapOptions(option) {}。两种表示法(箭头函数和命名函数)都应该被接受,具体取决于您的规则集。

    【讨论】:

    • 是的,我试过了,但我得到了这个:消息:'围绕箭头主体的意外块语句。 (箭头-来源:'eslint'
    • 是的,抱歉,当您的函数仅包含 1 条语句时,您不应该使用大括号:我将编辑我的答案
    • 是的,我知道,但是我的 linter 抛出错误,告诉我应该使用括号,当我有第二种方式时,只有一个错误:意外的块语句...
    • 我不知道你的规则集是什么,它可能希望你用括号括起来你的选项参数!使用 airbnb 规则集,我编辑的答案通过了我的 linter,没有错误/警告。
    猜你喜欢
    • 2013-01-21
    • 1970-01-01
    • 2011-08-08
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多