如何命名es6类(对于React组件)

时间:2015-08-26 15:39:07

标签: javascript reactjs ecmascript-6

这是部分ES6问题部分反应问题。我正在尝试在React中使用namespaced components和ES6类以及Babel。所以我想真正的问题是如何命名空间es6类,以便我可以做到这里解释的内容:https://facebook.github.io/react/docs/jsx-in-depth.html#namespaced-components

因为我收到意外的令牌错误:

class Headline extends Component { ... }

class Headline.Primary extends Component { ...
              ^

2 个答案:

答案 0 :(得分:26)

ECMAScript-6 class declaration语法需要标准的 BindingIdentifer 作为类名。点不是标识符名称中的有效字符。

在OP中的链接中使用的上下文中,"命名空间"是一个对象,属性将使用点表示法逐个添加到该对象。

您可以使用 类表达式 来复制它:



'use strict'

var ns = {}

ns.MyClass = class {
  constructor() {
    console.log('in constructor')
  }
}

new ns.MyClass()




答案 1 :(得分:22)

这并没有真正改变ES6,你仍然需要做一个任务:

Headline.Primary = class Primary extends Component { … };

但是,使用像Headline这样的类作为命名空间的方法在ES6中已经相当不赞同(以前一直是一个值得怀疑的实践),你应该利用新的模块系统。将Primary导出为命名导出,而不是导入Headline类而不是import * as headlines from …