这是部分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 { ...
^
答案 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 …
。