代码之家  ›  专栏  ›  技术社区  ›  UtkarshPramodGupta

为什么作为箭头函数的方法在react类中工作,而不是在普通类中?

  •  0
  • UtkarshPramodGupta  · 技术社区  · 6 年前

    我们可以将组件类的方法声明为箭头函数,如下所示:

    class SomeComponent extends React.Component {
      someMethod = () => { // <<----- This does not throw error
        // some code
      }
    }
    

    …这不会引发任何错误,但下面会:

    class SomeNormalClass {
      someMethod = () => { // <<----- This throws error
        // some code
      }
    }
    

    上面说出乎意料 = someMethod . 如果我换了我的 某种方法

    class SomeNormalClass {
      function someMethod() { // <<----- This works fine
        // some code
      }
    }
    
    2 回复  |  直到 6 年前
        1
  •  3
  •   ya.ymer    6 年前

    你的 someMethod 在第一个例子中是类的属性,而不是方法。BabelJS支持类中的属性,但原生js不支持。 here . 你应该在 constructor 香草JS。

        2
  •  0
  •   Estus Flask    6 年前

    someMethod = () => {...} stage 3 proposal 它不是本地支持的,需要由transpiler(Babel)改造; someMethod 类字段是构造函数代码的语法糖:

    constructor() {
      this.someMethod = () => {
        // some code
      }
    }
    

    Both SomeComponent and SomeNormalClass are expected to work