从类名设置显示名称的React类装饰器

时间:2019-03-28 14:32:20

标签: reactjs typescript typescript-decorator

我想要一个装饰器,将装饰类的静态属性displayName设置为类的名称。用法如下:

@NamedComponent
class Component extends React.Component {
    \* ... *\
}

在我看来,这是解决this issue更好的方法,而不是建议的解决方法。有可能吗?

1 个答案:

答案 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';
    \* ... *\
}