Ho una stringa che contiene un nome della classe (proveniente da un file json). Questa stringa indica alla mia classe Template quale layout/modello utilizzare per i dati (anche in json). Il problema è che il mio layout non viene visualizzato.Creare un'istanza di una classe React da una stringa
Home.jsx:
//a template or layout.
var Home = React.createClass({
render() {
return (
<div>Home layout</div>
)
}
});
Template.jsx:
var Template = React.createClass({
render: function() {
var Tag = this.props.template; //this is the name of the class eg. 'Home'
return (
<Tag />
);
}
});
non ottengo errori ma ho anche non vedo il layout/Casa Class. Ho controllato il props.template e questo registra le informazioni corrette. Inoltre, posso vedere l'elemento home nel DOM. Tuttavia sembra che questo:
<div id='template-holder>
<home></home>
</div>
se cambio riga seguente:
var Tag = Home;
//this works but it's not dynamic!
Tutte le idee, come posso risolvere questo problema? Sono sicuro che sia una semplice soluzione o sto facendo qualcosa di stupido. L'aiuto sarebbe apprezzato Mi scuso se questo è già stato chiesto (non ho potuto trovarlo).
Grazie, Ewan
Grazie, speravo di evitare di avere mappe/collegamenti nel codice. Mi piacerebbe essere in grado di aggiungere modelli senza cambiare la base del codice principale. Non è possibile? – ewan
@ewan È possibile creare una sorta di registro globale e registrare ogni componente quando viene creato con 'React.createClass' (ad esempio, avvolgendolo in una chiamata di funzione o qualcosa del genere), ma sarà sicuramente necessario ottenere riferimenti ai componenti effettivi . –