Есть ли причина, по которой имена компонентов всегда «Неизвестны»?
На всякий случай использую browserify, а исходники не минимизируются, а только объединяются.
Вот как это выглядит:
Хорошо, вот быстрое обновление: если компонент представлен таким образом, у него будет Unknown
в качестве имени:
exports.MyComponent = React.createClass({...});
Однако когда я меняю его на это, он начинает работать:
var MyComponent = React.createClass({...});
exports.MyComponent = MyComponent;
Я проверил исходный код расширения, но не могу понять, что такое tagName
и как оно установлено.
Если вы не используете JSX, вам нужно добавить в свой класс атрибут displayName
.
var MyComponent = React.createClass({
displayName: 'MyComponent',
...
});
Если вы используете JSX, это делается автоматически. К сожалению, иначе получить это невозможно.
Да, я использую JSX. Итак, похоже, это другая проблема - компилятор JSX не может внести displayName
если компонент объявлен с помощью exports.ComponentName = React.createClass()
.
JSX теоретически может поддерживать и ваш формат. Эта проблема исчезнет, когда мы перейдем к классам ES6 или чему-то подобному.
TagName - это то, что является частью компонентов DOM в ядре React. У него нет displayName.
Если вы хотите отправить запрос на перенос, вы можете добавить здесь свои предпочтительные форматы:
Разобрался, спасибо. Ручной displayName
пока работает.
Только что сделал https://github.com/facebook/react/pull/799, который должен исправить это для всех случаев, которые я могу придумать.
Я использую Chrome-плагин React Developer Tools
и когда я проверяю дерево React, я вижу «Прокси-компонент» вместо фактического имени компонентов. Может быть проблема webpack
? Я попытался добавить displayName, но этого не произошло.
Кто-нибудь еще сталкивался с этой проблемой?
Самый полезный комментарий
Я использую Chrome-плагин
React Developer Tools
и когда я проверяю дерево React, я вижу «Прокси-компонент» вместо фактического имени компонентов. Может быть проблемаwebpack
? Я попытался добавить displayName, но этого не произошло.Кто-нибудь еще сталкивался с этой проблемой?