我应该在React中将不使用它的方法转换为静态方法吗?

时间:2017-07-06 11:22:48

标签: javascript reactjs

我开始使用ESlint,和 当我在React组件中创建类似的方法时:

getWholeQUantityProducts(obj) {
    return Object.keys(obj)
      .reduce((sum, key) => sum + parseFloat(obj[key]), 0);
  }

它警告我 "If a class method does not use this, it can safely be made a static function"

然后我将它设置为静态并将其放在构造函数之前:

  static getWholeQUantityProducts(obj) {
    return Object.keys(obj)
      .reduce((sum, key) => sum + parseFloat(obj[key]), 0);
  }

现在在我的组件中调用此方法,我写this.constructor.methodName

我还没有看到任何人在反应教程中推荐或使用这些内容。

那么我应该关闭这个eslint规则吗?如果不包含 this ,则编写静态方法。

1 个答案:

答案 0 :(得分:0)

ESLint规则是创作者创作的最佳实践。在这种情况下,它看起来更像是一个实用程序方法而不依赖于类,因此将它作为静态方法导出到实用程序类中是有意义的。

但是用this.constructor.methodName来称呼它是很奇怪的。例如。应该看起来像这样

export class Utils {

    public static getWholeQUantityProducts(obj) {
    return Object.keys(obj)
      .reduce((sum, key) => sum + parseFloat(obj[key]), 0);
  }
}

你可以用Utils.getWholeQUantityProducts(obj)来称呼它。