จริงๆแล้วมีหลายวิธีที่จะไปด้วยกัน
คุณต้องการใช้ JSX ในอุปกรณ์ประกอบฉากของคุณ
คุณสามารถใช้ {} เพื่อทำให้ JSX แยกวิเคราะห์พารามิเตอร์ ข้อ จำกัด เดียวที่เหมือนกันสำหรับทุกองค์ประกอบ JSX: ต้องส่งคืนองค์ประกอบรากเดียวเท่านั้น
myProp={<div><SomeComponent>Some String</div>}
วิธีที่ดีที่สุดในการอ่านคือสร้างฟังก์ชัน renderMyProp ที่จะส่งคืนคอมโพเนนต์ JSX (เช่นเดียวกับฟังก์ชันการเรนเดอร์มาตรฐาน) จากนั้นเรียก myProp = {this.renderMyProp ()}
คุณต้องการส่งเฉพาะ HTML เป็นสตริง
โดยค่าเริ่มต้น JSX ไม่อนุญาตให้คุณแสดง HTML ดิบจากค่าสตริง อย่างไรก็ตามมีวิธีที่จะทำให้ได้:
myProp="<div>This is some html</div>"
จากนั้นในส่วนประกอบของคุณคุณสามารถใช้งานได้ดังนี้:
<div dangerouslySetInnerHTML=myProp={{ __html: this.renderMyProp() }}></div>
ระวังว่าโซลูชันนี้ 'สามารถ' เปิดได้ในการโจมตีแบบปลอมแปลงสคริปต์ข้ามไซต์ นอกจากนี้โปรดระวังว่าคุณสามารถแสดงผล HTML ธรรมดาเท่านั้นไม่มีแท็ก JSX หรือส่วนประกอบหรือสิ่งที่น่าสนใจอื่น ๆ
ทางอาร์เรย์
ในการตอบกลับคุณสามารถส่งอาร์เรย์ขององค์ประกอบ JSX นั่นหมายความว่า:
myProp={["This is html", <span>Some other</span>, "and again some other"]}
ฉันไม่แนะนำวิธีนี้เนื่องจาก:
- มันจะสร้างคำเตือน (คีย์ที่หายไป)
- มันอ่านไม่ออก
- ไม่ใช่วิธี JSX จริงๆ แต่เป็นการแฮ็กมากกว่าการออกแบบที่ตั้งใจไว้
วิธีที่เด็ก ๆ
การเพิ่มเพื่อความสมบูรณ์ แต่ในการตอบสนองคุณยังสามารถรับเด็กทั้งหมดที่ 'อยู่ใน' องค์ประกอบของคุณได้
ดังนั้นถ้าฉันใช้รหัสต่อไปนี้:
<SomeComponent>
<div>Some content</div>
<div>Some content</div>
</SomeComponent>
จากนั้นทั้งสอง div จะพร้อมใช้งานเป็น this.props.children ใน SomeComponent และสามารถแสดงผลด้วยไวยากรณ์มาตรฐาน {}
โซลูชันนี้เหมาะอย่างยิ่งเมื่อคุณมีเนื้อหา HTML เพียงรายการเดียวที่จะส่งผ่านไปยังคอมโพเนนต์ของคุณ (ลองนึกภาพส่วนประกอบของ Popin ที่ใช้เนื้อหาของ Popin เป็นลูกเท่านั้น)
อย่างไรก็ตามหากคุณมีเนื้อหาหลายรายการคุณไม่สามารถใช้ลูก ๆ ได้ (หรืออย่างน้อยคุณต้องรวมเข้ากับโซลูชันอื่นที่นี่)