组件名称总是“未知”有什么原因吗?
以防万一,我使用的是 browserify 并且源没有被缩小,只是被连接。
这是它的样子:
好的,这是快速更新:如果组件像这样公开,它将以Unknown
作为名称:
exports.MyComponent = React.createClass({...});
但是,当我将其更改为此时,它开始工作:
var MyComponent = React.createClass({...});
exports.MyComponent = MyComponent;
我检查了扩展源代码,但无法弄清楚tagName
是什么以及它是如何设置的。
如果您不使用 JSX,则需要向类添加displayName
属性。
var MyComponent = React.createClass({
displayName: 'MyComponent',
...
});
如果您使用 JSX,这是自动完成的。 不幸的是,没有其他方法可以得到它。
是的,我正在使用 JSX。 所以,这似乎是不同的问题 - 如果组件是用exports.ComponentName = React.createClass()
声明的,JSX 编译器不能贡献displayName
exports.ComponentName = React.createClass()
。
这是负责它的代码: https :
JSX 理论上也可以支持您的格式。 当我们转向 ES6 类或类似的东西时,这个问题就会消失。
tagName 是 React 核心中 DOM 组件的一部分。 它没有显示名称。
明白了,谢谢。 手动displayName
现在可以使用。
刚刚制作了https://github.com/facebook/react/pull/799应该可以解决我能想到的所有情况。
我正在使用 chrome 插件React Developer Tools
,当我检查 React 树时,我看到的是“代理组件”而不是组件的实际名称。 可能是webpack
问题? 我尝试添加“displayName”,但没有成功。
还有其他人遇到这个问题吗?
最有用的评论
我正在使用 chrome 插件
React Developer Tools
,当我检查 React 树时,我看到的是“代理组件”而不是组件的实际名称。 可能是webpack
问题? 我尝试添加“displayName”,但没有成功。还有其他人遇到这个问题吗?