Ho un componente generico che mappa i suoi componenti figlio per filtrare solo i bambini di un certo tipo, come trovato di seguito.Confronto di due componenti - è Componente X un'istanza del Componente A
Tuttavia, l'utilizzo della proprietà type
era una semplice ipotesi e non riesco a trovarlo documentato. Non solo, la registrazione mostra che si tratta di una funzione, che non può essere eseguita. Oltre a questo c'è un paio di problemi che devono essere risolti quando si utilizza Browserify.
Un'altra opzione potrebbe essere quella di leggere child.prototype.displayName. Ma anche questo sembra sbagliato.
Domanda: Fondamentalmente, sto cercando un modo solido per confrontare se due componenti ReactJS sono uguali.
ESEMPIO
(Aggiornato: non così male, dopo tutto)
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);
In che senso vuoi conoscere i componenti sono uguali? Equivale significa che rendono lo stesso risultato? –
No, possono essere (e sono) totalmente diversi. Devo sapere se sono un'istanza dello stesso React.createClass(). – David
Correlati: https://www.bountysource.com/issues/3127455-proptypes-define-children-component-type – David