2017-01-11 2 views
5

Я знаю, что это it considered a good practice, чтобы назвать компонент реакции, добавив свойство displayName, но не уверен, что я знаю почему. В реакционных документах говорится:Что такое React component 'displayName'?

Строка displayName используется для отладки сообщений. JSX автоматически устанавливает это значение; см. JSX в глубину.

Почему так важно? что произойдет, если я не добавлю его? (до сих пор у меня его не было и не было проблем с отладкой)

Есть ли рекомендации/рекомендации по использованию компонентов?

+1

, если вы не добавите имя компонента не будет отображаться, и это будет трудно отлаживать для государства. Но если вы используете Es6 для создания компонента (расширяющий компонент), вам не нужно добавлять отображаемое имя вручную для каждого компонента. –

ответ

8

Я всегда задавал displayName с тем же именем, что и переменная, которую я назначил. Это будет использоваться только в сборках разработки, поскольку оно удаляется с помощью устранения мертвого кода в производственных сборках и не должно опираться на ваше приложение.

Что касается того, где он используется, то в основном в рамках реакции обмена сообщениями об ошибках. Вот почему он упоминается как полезный для отладки. Если имя не может быть выведено, сообщения об ошибках по умолчанию говорят Component, что крайне сложно отладить, если в вашем проекте имеется более одного компонента.

Вот несколько сообщений об ошибках, которые ссылаются на DISPLAYNAME в источнике среагировать:.

Invalid Return

Inline style error

+0

Как вы на самом деле устанавливаете displayName? Согласно реактивным документам, это, как представляется, связано с именем компонента, но не говорит, как вручную установить его для не-HOC. – gabrielwr

+2

Это статическое свойство. Самый быстрый способ - установить его напрямую, т.е. 'hoc.displayName =" hocName ";' – kwelch