gpt4 book ai didi

javascript - 为什么以 ES6 方式定义 React 组件构造函数行不通?

转载 作者:行者123 更新时间:2023-11-28 17:42:52 24 4
gpt4 key购买 nike

我正在尝试转换它:

constructor () {
...
}

对此:

constructor = () => {
...
}

但这行不通。您能否解释一下为什么不允许这样做?它是否有任何危险,或者只是一个任意选择不允许构造函数是非静态的?

最佳答案

ES6 类基本上只是旧 ES5 原型(prototype)继承周围的语法糖。 ES6 中的构造函数类似于 ES5 中的函数本身。例如:

class foo {
constructor () {
console.log('hello world');
}
}

相当于:

function foo() {
console.log('hello world');
}

您尝试执行的类定义中的箭头函数尚未成为 ecmascript 的一部分,但感谢 babel 的转译器,您现在可以使用它们。 babel 的作用如下:

class foo {
boundFunction = () => {
console.log('bound');
}
}

变成:

function foo() {
this.boundFunction = () => {
console.log('bound');
}
}

请注意,babel 正在将函数从类定义中取出,并将其移至构造函数中。这样,每次创建一个对象时,它都会获得自己的函数实例

然后我们就进入了你的场景。这会告诉 babel 做什么?

class foo {
constructor = () => {
console.log('bound');
}
}

因此,从 boundFunction 示例来看,babel 应该将此函数移至构造函数中,但从第一个示例来看,它也应该> 构造函数。这些是互斥的东西,所以 babel 会给你一个错误。

关于javascript - 为什么以 ES6 方式定义 React 组件构造函数行不通?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47514196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com