คุณลักษณะใหม่ใน React 19 ที่อนุญาตให้ผ่านการอ้างอิงเป็นอุปกรณ์ประกอบฉากแทนการใช้ `forwardRef` สามารถปรับปรุงประสิทธิภาพการพัฒนาในสองสามวิธี:
API ที่เรียบง่ายและใช้งานง่ายมากขึ้น
การส่งผ่านเป็นอุปกรณ์ประกอบฉากปกติเป็น API ที่เป็นธรรมชาติและใช้งานง่ายกว่าเมื่อเทียบกับการใช้ `forwardRef` มันสอดคล้องกับหลักการตอบสนองหลักของการส่งข้อมูลลงไปที่ต้นไม้ส่วนประกอบผ่านอุปกรณ์ประกอบฉาก สิ่งนี้ทำให้รหัสง่ายต่อการเข้าใจและเหตุผลเกี่ยวกับโดยเฉพาะอย่างยิ่งสำหรับผู้เริ่มต้น
หม้อไอน้ำลดลง
การใช้ `ForwardRef` ต้องห่อส่วนประกอบลูกในการโทร` ForwardRef` และส่งผ่าน `ref` เป็นอาร์กิวเมนต์ที่สองไปยังองค์ประกอบฟังก์ชัน สิ่งนี้จะเพิ่มรหัสหม้อไอน้ำบางส่วน ผ่านการอ้างอิงโดยตรงเป็นเสาจะกำจัดรหัสพิเศษนี้
การห่อหุ้มที่ดีขึ้น
เมื่อใช้ `forwardRef` ส่วนประกอบลูกจะต้องทราบว่าได้รับการอ้างอิงและจำเป็นต้องแนบกับองค์ประกอบ DOM ที่เหมาะสม ผ่านการอ้างอิงเป็นเสาช่วยให้องค์ประกอบเด็กยังคงไม่ทราบว่าการอ้างอิงปรับปรุงการห่อหุ้ม
refactoring ง่ายขึ้น
หากคุณต้องการ refactor แผนผังส่วนประกอบและเปลี่ยนจุดเชื่อมต่อ REF มันง่ายกว่าที่จะอัปเดตชื่อเสาแทนที่จะต้องอัปเดตการโทร `forwardRef` ในหลายสถานที่ สิ่งนี้ทำให้ codebase ได้รับการบำรุงรักษามากขึ้น
สอดคล้องกับส่วนประกอบคลาส
ในส่วนประกอบของคลาสการอ้างอิงจะถูกแนบมาโดยใช้ `ref` prop ไม่ใช่ผ่านกลไกพิเศษ` forwardref` การอนุญาตให้อ้างอิงเป็นอุปกรณ์ประกอบฉากในส่วนประกอบฟังก์ชันให้ API ที่สอดคล้องกันมากขึ้นในคลาสและส่วนประกอบฟังก์ชั่น
การตรวจสอบพิมพ์ง่ายขึ้น
เมื่อใช้ TypeScript มันง่ายกว่าที่จะพิมพ์การตรวจสอบการอ้างอิงที่ส่งผ่านเป็นเสาเมื่อเทียบกับการใช้ `forwardRef` และ` refattributes 'ประเภท ประเภท Prop สามารถอนุมานได้โดยตรงจากวัตถุ `ref`
โดยสรุปคุณลักษณะการอ้างอิงใหม่เป็นอุปกรณ์ประกอบฉากทำให้ React API ใช้งานง่ายมากขึ้นลดระดับหม้อไอน้ำปรับปรุงการห่อหุ้มและทำให้ codebase ได้รับการบำรุงรักษามากขึ้น - ทั้งหมดนี้ปรับปรุงประสิทธิภาพของนักพัฒนาเมื่อทำงานกับ Refs ใน React 19 และเกิน [1] [3]
การอ้างอิง:[1] https://www.copycat.dev/blog/react-forwardref/
[2] https://stackoverflow.com/questions/58578570/value-of-using-react-forwardref-vs-custom-ref-prop
[3] https://legacy.reactjs.org/docs/forwarding-refs.html
[4] https://www.reddit.com/r/reactjs/comments/1asgpy9/ref_as_a_prop_advance_beginner_question/
[5] https://blog.logrocket.com/why-you-hould-use-refs-sparingly-production/
[6] https://react.dev/blog/2024/04/25/react-19-umgrade-guide
[7] https://dev.to/dalcio/react-performance-usestate-reducer-ref-theoretical-summary-1bok
[8] https://www.freecodecamp.org/news/new-react-19-features/