【发布时间】:2015-01-07 16:57:49
【问题描述】:
我有一个通用组件,它将其子组件映射为仅过滤特定类型的子组件,如下所示。
但是,使用属性type 只是一个猜测,我找不到它的文档。不仅如此,记录它表明它是一个无法执行的函数。除此之外,在使用 Browserify 时还有几个问题需要解决。
另一种选择是读取 child.prototype.displayName。但这也感觉不对。
问题:基本上,我正在寻找一种比较两个 ReactJS 组件是否相等的可靠方法。
示例
(更新:毕竟没那么糟糕)
var Foo = React.createClass({
render: function() {
return <div>Foo</div>;
}
});
var Bar = React.createClass({
render: function() {
return <div>Bar</div>;
}
});
var Main = React.createClass({
render: function() {
var filteredChildren = [];
filteredChildren = React.Children.map(function(child) {
if (child.type === Foo.type) {
return child;
}
});
return (
<div>
{filteredChildren}
</div>
);
}
});
React.render(<Main><Foo /><Bar /></Main>, document.body);
【问题讨论】:
-
你想知道组件在什么意义上是相等的?相等是否意味着它们呈现相同的输出?
-
不,它们可能(并且现在)完全不同。我需要知道它们是否是同一个 React.createClass() 的实例。
标签: javascript reactjs