私は、下にあるように、その子コンポーネントをマップして特定のタイプの子のみをフィルタリングする汎用コンポーネントを持っています。2つのコンポーネントの比較 - コンポーネントXのコンポーネントAのインスタンス
しかし、type
というプロパティを使用したのは単なる推測でしたが、私はそれがわかりません。それだけでなく、ロギングはそれが実行不可能な機能であることを示します。それに加えて、Browserifyを使用する際に回避しなければならない問題がいくつかあります。
もう1つの方法は、child.prototype.displayNameを読み取ることです。しかし、それも間違っていると感じます。
質問:基本的に、私は2つの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()のインスタンスであるかどうかを知る必要があります。 – David
関連:https://www.bountysource.com/issues/3127455-proptypes-define-children-component-type – David