Aslında bununla gitmenin birden fazla yolu var.
Sahne donanımınızın içinde JSX kullanmak istiyorsunuz
JSX'in parametreyi ayrıştırmasına neden olmak için {} kullanabilirsiniz. Tek sınırlama, her JSX öğesi ile aynıdır: Yalnızca bir kök öğe döndürmelidir.
myProp={<div><SomeComponent>Some String</div>}
Bunu yapmanın en iyi okunabilir yolu, JSX bileşenlerini döndürecek bir renderMyProp işlevi oluşturmaktır (standart oluşturma işlevi gibi) ve ardından myProp = {this.renderMyProp ()}
Bir dizge olarak yalnızca HTML'yi geçirmek istiyorsunuz
Varsayılan olarak JSX, dize değerlerinden ham HTML oluşturmanıza izin vermez. Ancak bunu yapmanın bir yolu var:
myProp="<div>This is some html</div>"
Ardından bileşeninizde şu şekilde kullanabilirsiniz:
<div dangerouslySetInnerHTML=myProp={{ __html: this.renderMyProp() }}></div>
Bu çözümün siteler arası kodlama sahteciliği saldırılarında açılabileceğine dikkat edin. Ayrıca, yalnızca basit HTML oluşturabileceğinizden, JSX etiketi veya bileşeni veya diğer süslü şeyler yapamayacağınıza dikkat edin.
Dizi yolu
React'te, bir dizi JSX öğesi iletebilirsiniz. Bunun anlamı:
myProp={["This is html", <span>Some other</span>, "and again some other"]}
Bu yöntemi tavsiye etmem çünkü:
- Bir uyarı oluşturacak (eksik anahtarlar)
- Okunabilir değil
- Bu gerçekten JSX yolu değil, amaçlanan bir tasarımdan çok bir hack.
Çocukların yolu
Eksiksizlik uğruna ama tepki olarak, bileşeninizin 'içindeki' tüm çocukları da alabilirsiniz.
Yani aşağıdaki kodu alırsam:
<SomeComponent>
<div>Some content</div>
<div>Some content</div>
</SomeComponent>
Daha sonra iki div, SomeComponent içinde this.props.children olarak kullanılabilir ve standart {} sözdizimi ile işlenebilir.
Bu çözüm, Bileşeninize aktarılacak yalnızca bir HTML içeriğiniz olduğunda mükemmeldir (yalnızca Popin'in içeriğini alt öğe olarak alan bir Popin bileşeni düşünün).
Bununla birlikte, birden fazla içeriğiniz varsa, çocukları kullanamazsınız (veya en azından burada başka bir çözümle birleştirmeniz gerekir)