Saya mencoba menulis komponen Bereaksi. untuk tag heading html (h1, h2, h3, dll ...), di mana prioritas heading berubah secara dinamis berdasarkan prioritas yang telah kami tentukan dalam alat peraga.
Inilah yang saya coba lakukan.
<h{this.props.priority}>Hello</h{this.props.priority}>
output yang diharapkan:
<h1>Hello</h1>
Ini tidak bekerja. Apakah ada metode yang memungkinkan untuk melakukan ini?
Jawaban:
Tidak ada cara untuk melakukan itu di tempat, cukup letakkan di dalam variabel ( dengan huruf kapital pertama ):
sumber
React.createClass
, saya lebih suka cara ini. Terima kasih.<CustomTag foo="bar">
var foo = { bar: CustomTag }; return <foo.bar />
bekerja dengan baik.Untuk kelengkapan, jika Anda ingin menggunakan nama dinamis, Anda juga dapat langsung menelepon
React.createElement
daripada menggunakan JSX:Ini menghindari keharusan membuat variabel atau komponen baru.
Dengan alat peraga:
Dari dokumen :
sumber
Jika Anda menggunakan TypeScript, Anda akan melihat kesalahan seperti ini:
TypeScript tidak tahu itu
CustomTag
adalah nama tag HTML yang valid dan melemparkan kesalahan yang tidak membantu.Untuk memperbaikinya, gunakan
CustomTag
sebagaikeyof JSX.IntrinsicElements
!sumber
Types of property 'crossOrigin' are incompatible. Type 'string | undefined' is not assignable to type '"" | "anonymous" | "use-credentials" | undefined'. Type 'string' is not assignable to type '"" | "anonymous" | "use-credentials" | undefined'.
Semua jawaban lain berfungsi dengan baik tetapi saya akan menambahkan beberapa tambahan, karena dengan melakukan ini:
Komponen Tajuk:
Yang dapat Anda gunakan seperti itu
atau Anda dapat memiliki konsep abstrak yang berbeda, misalnya Anda dapat menentukan ukuran alat peraga seperti:
Yang dapat Anda gunakan seperti itu
sumber
Dalam contoh heading dinamis (h1, h2 ...) , komponen dapat kembali
React.createElement
(disebutkan di atas oleh Felix ) seperti itu.Untuk kompabilitas, baik alat peraga dan anak-anak dilewatkan
Lihat Contoh
sumber