Реагирует декоратор класса, который устанавливает отображаемое имя из имени класса - PullRequest
0 голосов
/ 28 марта 2019

Я хотел бы иметь декоратор, который устанавливает статическое свойство displayName оформленного класса к имени класса. Использование будет выглядеть так:

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

На мой взгляд, это был бы гораздо лучший способ решить эту проблему , чем предлагаемый обходной путь. Это возможно?

1 Ответ

0 голосов
/ 28 марта 2019

Декоратор не может получить имя класса из ниоткуда. Там нет места, где он может получить его при оценке минимизированного кода. Исходный код будет перенесен в производство к чему-то вроде:

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