2
เมื่อใดควรใช้ JSX.Element vs ReactNode vs ReactElement
ฉันกำลังย้ายแอปพลิเคชัน React ไปยัง TypeScript จนถึงตอนนี้มันใช้งานได้ดี แต่ฉันมีปัญหากับประเภทการส่งคืนของrenderฟังก์ชันตามลำดับส่วนประกอบฟังก์ชันของฉัน จนถึงตอนนี้ผมได้ใช้เสมอJSX.Elementเป็นชนิดกลับตอนนี้ไม่ได้ทำงานใด ๆ มากขึ้นถ้าเป็นส่วนประกอบตัดสินใจที่จะไม่ทำให้อะไรคือผลตอบแทนnullตั้งแต่ไม่มีค่าที่ถูกต้องสำหรับnull JSX.Elementนี่เป็นจุดเริ่มต้นของการเดินทางของฉันเพราะตอนนี้ฉันค้นหาเว็บและพบว่าคุณควรใช้ReactNodeแทนซึ่งรวมถึงnullสิ่งอื่น ๆ ที่อาจเกิดขึ้นได้ด้วย นี่ดูเหมือนจะเป็นการเดิมพันที่ดีกว่า อย่างไรก็ตามตอนนี้เมื่อสร้างส่วนประกอบของฟังก์ชัน TypeScript จะบ่นเกี่ยวกับReactNodeประเภท อีกครั้งหลังจากการค้นหาบางอย่างฉันพบว่าสำหรับส่วนประกอบของฟังก์ชันคุณควรใช้ReactElementแทน อย่างไรก็ตามหากฉันทำเช่นนั้นปัญหาความเข้ากันได้จะหายไป แต่ตอนนี้ TypeScript บ่นอีกครั้งว่าnullไม่ใช่ค่าที่ถูกต้อง ดังนั้นเพื่อตัดเรื่องสั้นให้สั้นฉันมีคำถามสามข้อ: คือความแตกต่างระหว่างสิ่งที่JSX.Element, ReactNodeและReactElement? ทำไมrenderวิธีการของส่วนประกอบชั้นกลับReactNodeแต่ชิ้นส่วนฟังก์ชั่นกลับมาReactElement? ฉันจะแก้ปัญหานี้ได้nullอย่างไร?