在React应用程序中使用bind的ES6模式

时间:2017-11-29 21:30:37

标签: reactjs ecmascript-6

我注意到在很多React代码示例中,您会看到如下内容:

class Foo extends Component {
  constructor() {
    this.someMethod = this.someMethod.bind(this);
  }

  someMethod() {

  }

  <Bar doSomething={this.someMethod} />
}

我看到的其他例子如下:

class Foo extends Component {
  someMethod() {

  }

  <Bar doSomething={this.someMethod} />
}

这两种模式都能达到相同的效果吗?使用一个与另一个相比有不利之处吗?

1 个答案:

答案 0 :(得分:3)

所以这取决于方法的作用。如果方法在引用组件时引用this,则应该在构造函数中绑定它,以便词法上下文正确。否则该方法会引发错误。

如果方法没有引用this,则无需绑定方法。

或者,您可以使用此模式:

someMethod = () => {}

由于胖箭头功能没有词汇this