2015-01-13 17 views
13

kullanarak işleme sokun React.js'yi deniyorum ve gerçekten iyi çalışıyor. o kadar gibi diğer sınıflara sınıfları enjekte etmek mümkün olup olmadığını merak ediyorum:İsmini

var Container = React.createClass({ 
    render: function() { 
     <{this.props.implComponent}/> 
    } 
}); 

implComponent şöyle geçti varsayarak:

React.render(
    <Container implComponent="somePredefinedVariable" />, 
    document.getElementById('content') 
); 

Bu durum, bir sözdizimi hatası çalışmıyor. Nedenini kolayca anlayabiliyorum. Başka bir deyişle, isimlere dayanarak diğer sınıflara sınıflar eklemek istiyorum. Mümkün mü? Bunu nasıl yapabilirim?

cevap

18

Çok yakındınız. Bileşen sınıfını kendiniz (bir dize değil) iletmeniz ve etiket sözdiziminin zaten bir değişken alması nedeniyle, {} s'den kurtulursunuz. Ayrıca, düğümün oluşturulmasını geri almayı da unutmayın.

var Container = React.createClass({ 
    render: function() { 
     return <this.props.implComponent /> 
    } 
}); 

React.render(
    <Container implComponent={SomePredefinedVariable} />, 
    document.getElementById('content') 
); 

temel bir dom bileşeni geçmek istiyorsanız dönüşümü sonucu

var Container = React.createClass({displayName: "Container", 
    render: function() { 
     return React.createElement(this.props.implComponent, null) 
    } 
}); 

ReactDOM.render(
    React.createElement(Container, {implComponent: SomePredefinedVariable}), 
    document.getElementById('content') 
); 
ReactDOM.render(
    React.createElement(Container, {implComponent: "div"}), 
    document.getElementById('content') 
); 
düşünürsek, sen bu mantıklı bir dize

kullanmayı tercih ediyorum

İlgili konular