我想要一个装饰器,将装饰类的静态属性displayName
设置为类的名称。用法如下:
@NamedComponent
class Component extends React.Component {
\* ... *\
}
在我看来,这是解决this issue更好的方法,而不是建议的解决方法。有可能吗?
答案 0 :(得分:0)
装饰器无法无处获取类名。评估最小化代码时,没有地方可以得到它。原始代码将在生产过程中转换为类似以下内容的
:let b = a(class b extends c {...})
NamedComponent
装饰器变为a
,而Component
类变为b
的地方。
这是可能的,但前提是装饰器将名称明确指定为字符串:
@NamedComponent('Component')
class Component extends React.Component {
\* ... *\
}
在这一点上,这比没有装饰器做的更好:
class Component extends React.Component {
static displayName = 'Component';
\* ... *\
}