Sebenarnya, ada banyak cara untuk melakukannya.
Anda ingin menggunakan JSX di dalam properti Anda
Anda cukup menggunakan {} agar JSX mengurai parameter. Batasan satu-satunya adalah sama untuk setiap elemen JSX: Ini harus mengembalikan hanya satu elemen root.
myProp={<div><SomeComponent>Some String</div>}
Cara terbaik yang dapat dibaca untuk melakukannya adalah dengan membuat fungsi renderMyProp yang akan mengembalikan komponen JSX (seperti fungsi render standar) dan kemudian cukup memanggil myProp = {this.renderMyProp ()}
Anda hanya ingin meneruskan HTML sebagai string
Secara default, JSX tidak mengizinkan Anda merender HTML mentah dari nilai string. Namun, ada cara untuk melakukannya:
myProp="<div>This is some html</div>"
Kemudian di komponen Anda, Anda dapat menggunakannya seperti itu:
<div dangerouslySetInnerHTML=myProp={{ __html: this.renderMyProp() }}></div>
Berhati-hatilah karena solusi ini 'dapat' terbuka pada serangan pemalsuan skrip lintas situs. Juga berhati-hatilah karena Anda hanya dapat merender HTML sederhana, tanpa tag JSX atau komponen atau hal-hal mewah lainnya.
Cara array
Sebagai reaksi, Anda bisa melewatkan larik elemen JSX. Itu berarti:
myProp={["This is html", <span>Some other</span>, "and again some other"]}
Saya tidak akan merekomendasikan metode ini karena:
- Ini akan membuat peringatan (kunci hilang)
- Itu tidak bisa dibaca
- Ini sebenarnya bukan cara BEJ, ini lebih merupakan peretasan daripada desain yang dimaksudkan.
Cara anak-anak
Menambahkannya demi kelengkapan tetapi dalam bereaksi, Anda juga bisa mendapatkan semua anak yang ada 'di dalam' komponen Anda.
Jadi jika saya ambil kode berikut:
<SomeComponent>
<div>Some content</div>
<div>Some content</div>
</SomeComponent>
Kemudian dua div akan tersedia sebagai this.props.children di SomeComponent dan bisa dirender dengan sintaks {} standar.
Solusi ini sempurna ketika Anda hanya memiliki satu konten HTML untuk diteruskan ke Komponen Anda (Bayangkan komponen Popin yang hanya mengambil konten Popin sebagai anak-anak).
Namun, jika Anda memiliki banyak konten, Anda tidak dapat menggunakan anak-anak (atau Anda setidaknya perlu menggabungkannya dengan solusi lain di sini)