如何命名 es6 类(用于 React 组件)
IT技术
javascript
reactjs
ecmascript-6
2021-02-19 23:31:56
3个回答
在ECMAScript的6类声明的语法需要一个标准BindingIdentifer作为类名。点不是标识符名称中的有效字符。
在 OP 中的链接中使用的上下文中,“命名空间”是一个对象,并且使用用于属性访问的点表示法将属性逐一添加到该对象中。
您可以通过使用类表达式来复制它:
'use strict'
var ns = {}
ns.MyClass = class {
constructor() {
console.log('in constructor')
}
}
new ns.MyClass()
这在 ES6 中并没有真正改变,你仍然需要做一个赋值:
Headline.Primary = class Primary extends Component { … };
然而,Headline在 ES6 中使用像命名空间这样的类已经非常不推荐了(而且以前一直是一个有问题的做法),你应该改用新的module系统。导出Primary为命名导出,而不是导入Headline类,而是 do import * as headlines from …。
此链接也与此问题有关。
在Module objects部分,描述了您可以执行以下操作:
// headline.js file
export {Headline, Primary}
class Headline {}
class Primary {}
// In another module...
import * as Headline from "headline";
let h = new Headline.Headline();
let hp = new Headline.Primary();
这并不完全是您想要做的,而是另一种选择。
另一种方法几乎就像@Bergi 已经指出的那样,但我只是进一步澄清:
let Headline = class Headline extends Component { }
Headline.Primary = class Primary extends Component { }
export {Headline as default}
// in another module:
import Headline from 'headline';
let headline = new Headline();
let primary = new Headline.Primary();
其它你可能感兴趣的问题