创建 React 类时,哪个更好?
export default class Foo extends React.Component {
constructor (props) {
super(props)
this.doSomething = this.doSomething.bind(this)
}
doSomething () { ... }
}
or
export default class Foo extends React.Component {
doSomething = () => { ... }
}
我的一位同事认为后者会导致内存问题,因为 babel 会转译代码来捕获this
在闭包内,该引用将导致实例无法被 GC 清理。
对此有何想法?
公共类字段语法(所以doSomething = () => {...}
) is 尚未成为 ECMAScript 的一部分 https://github.com/tc39/proposals但它做得很好,我非常有信心它会实现这一目标。
因此,使用这种语法会强制您进行转译,但它带来了优势:
- 清晰、简洁的表达语法
this
binding
- 浏览器何时支持此功能的未来证明
- 不关心实施
对我来说,这是一场明显的胜利。在大多数情况下,您甚至不需要constructor(props)
,将您从样板代码中拯救出来super
call.
如果 Babel 实现会导致内存泄漏,您可以确定这些问题会很快被发现并修复。您更有可能因必须编写更多代码而自己造成泄漏。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)