【问题标题】:Arrow functions as class properties using Babel箭头函数作为类属性使用 Babel
【发布时间】:2018-08-27 06:56:28
【问题描述】:

有人能解释一下 React 中的 Babel 如何支持粗箭头函数作为类属性吗? 使用 Babel Try it out 我可以看到它们不受支持:

class Question {

  // Property (not supported)
  myProp = () => {
    return 'Hello, world!';
  }

  // Method (supported)
  myFunc() {
    return 'Hello, world!';
  }

}

ES6 不支持类属性(如果我错了请纠正我),但在 React(使用 Babel)中它们可以工作。

我可以看到使用 TypeScript Playground 的方法和属性之间的区别,但我不清楚 Babel 是否支持它们。 有插件吗?

更新:
我可以看到使用"babel-preset-stage-0" 支持它们。

【问题讨论】:

  • 如果你点击左侧的stage-0 就可以了。Babel 支持它们。
  • 您的问题是 babel 是否支持它们,如果我理解正确的话。是的,它确实。这就是为什么有 babel 预设阶段 0 的原因。

标签: javascript reactjs class babeljs ecmascript-next


【解决方案1】:

要支持类属性,您需要安装 babel-plugin-transform-class-properties 并将其添加到您的 .babelrcplugins 设置中(或在您的 webpack 配置中)。

注意这个插件也包含在

因此,如果您使用其中之一,则无需自己安装babel-plugin-transform-class-properties

【讨论】:

    【解决方案2】:

    正如@illiteratewriter 建议的,Stage 0 preset 支持类属性。暂时支持到Stage 2 preset

    提案现在必须另外有该功能的语法和语义的正式描述(使用 ECMAScript 规范的正式语言)。描述应尽可能完整,但可以包含待办事项和占位符。该功能需要两个实验性实现,但其中一个可以在 Babel 等转译器中。

    【讨论】:

    猜你喜欢
    • 2019-05-23
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 2016-03-24
    相关资源
    最近更新 更多