繁体   English   中英

当使用 React 时,最好在构造函数中使用粗箭头函数还是绑定函数?

[英]When using React Is it preferable to use fat arrow functions or bind functions in constructor?

创建 React 类时,哪个更可取?

export default class Foo extends React.Component {
  constructor (props) {
    super(props)
    this.doSomething = this.doSomething.bind(this)
  }

  doSomething () { ... }
}

或者

export default class Foo extends React.Component {
  doSomething = () => { ... }
}

我的一个同事认为后者会导致内存问题,因为 babel 将代码转换为在闭包中捕获this ,并且该引用将导致实例无法被 GC 清理。

对此有何想法?

公共类字段语法(所以doSomething = () => {...}还不是 ECMAScript 的一部分,但它做得很好,我非常有信心它会到达那里。

所以使用这种语法迫使你转译,但它带来了好处:

  • 表达this绑定的清晰、简洁的语法
  • 浏览器何时支持此功能的未来证明
  • 不关心执行

对我来说,这是一场明显的胜利。 在大多数情况下,您甚至不需要constructor(props) ,从而使您免于那个样板super调用。

如果 Babel 实现会导致内存泄漏,您可以确定这些问题会被快速找到并修复。 由于必须编写更多代码,您更有可能自己造成泄漏。

这里的链接清楚地强调了“在构造函数中绑定方法”而不是使用箭头函数作为实现事件绑定的短代码是安全的。

这是链接: https : //reactjs.org/docs/react-without-es6.html#autobinding供参考。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM