Для чего используется компонент React 'displayName'?

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

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

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

Есть ли какие-либо рекомендации/рекомендации относительно того, как назвать компоненты?

Ответ 1

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

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

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

Недействительный возврат

Ошибка встроенного стиля

Ответ 2

эта статья помогла мне:

Как получить строковое имя класса компонента React Native?

    class CardGroup extends Component {
      render() {
        return (
          <div>{this.props.children}</div>
        )
      }
    }
    CardGroup.propTypes = {
      children: function (props, propName, componentName) {
        const prop = props[propName]

        let error = null
        React.Children.forEach(prop, function (child) {
          if (child.type !== Card) {
            error = new Error(''' + componentName + '' children should be of type 'Card'.');
          }
        })
        return error
      }
    }