首页 > 解决方案 > 为什么方法作为箭头函数在反应类中起作用,但在普通类中不起作用?

问题描述

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

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

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

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

=之后说出乎意料someMethod。如果我将其更改someMethod为正常功能而不是将其声明为箭头功能,则效果很好,如下所示。为什么?

class SomeNormalClass {
  function someMethod() { // <<----- This works fine
    // some code
  }
}

标签: javascriptreactjsecmascript-6es6-classarrow-functions

解决方案


someMethod在第一个示例中是类的属性,而不是方法。BabelJS 支持类中的属性,但原生 js 不支持。你可以在这里看到区别。constructor您应该为 Vanilla JS添加一些属性。


推荐阅读