แอนิเมชันเข้าและออกโดยไม่ใช้ไลบรารี
สร้างแอนิเมชันเมื่อติดตั้งและถอดองค์ประกอบ โดยควบคุมจังหวะการแสดงผลและความทึบแสงด้วยตนเองใน React
แอนิเมชันเข้าและออกโดยไม่ใช้ไลบรารี เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
ปัญหาการถอดออกจาก DOM
เมื่อคุณแสดงผลแบบมีเงื่อนไขด้วย {show && React จะนำองค์ประกอบออกจาก DOM ทันทีที่เงื่อนไข show เป็นเท็จ จึงไม่มีเวลาสำหรับแอนิเมชันตอนออก เพราะโหนดถูกนำออกไปแล้ว
แอนิเมชันตอนเข้าสร้างได้ง่าย ส่วนแอนิเมชันตอนออกคือความท้าทายที่แท้จริง
วิธีที่ 1: คงองค์ประกอบไว้
วิธีแก้ที่ง่ายที่สุดคือไม่ถอดองค์ประกอบออกเลย ให้แสดงผลองค์ประกอบไว้และทำให้ opacity เป็นศูนย์ พร้อมใช้ pointer-events: none เมื่อซ่อน จากนั้นเปลี่ยนกลับเป็นหนึ่งเมื่อแสดง
วิธีนี้ทำให้การค่อย ๆ ปรากฏและหายไปราบรื่นทั้งสองทิศทาง โดยแลกกับการที่องค์ประกอบยังคงอยู่ใน DOM
วิธีที่ 2: เครื่องสถานะการติดตั้ง
หากต้องการถอดองค์ประกอบออกจริง ๆ ให้จำลองเครื่องสถานะขนาดเล็กที่มีเฟสอย่าง mounting mounted unmounting และ unmounted โดยจะนำโหนดออกก็ต่อเมื่อแอนิเมชันตอนออกทำงานเสร็จแล้ว
สถานะจะกำหนดว่าคลาสแอนิเมชันใดถูกใช้ในแต่ละเฟส
ฮุก useMount
คุณสามารถรวมเครื่องสถานะนี้ไว้ในฮุกแบบกำหนดเอง ซึ่งมักเรียกว่า useMount ฮุกรับค่าการมองเห็นที่ต้องการ และคืนค่าว่าองค์ประกอบควรอยู่ใน DOM หรือไม่ พร้อมเฟสปัจจุบัน
คอมโพเนนต์จึงยังคงสะอาด เพราะตรรกะด้านจังหวะเวลาจะอยู่ในฮุกที่นำกลับมาใช้ซ้ำได้
คู่คลาสสำหรับการเข้าและการออก
ตามรูปแบบที่ใช้กันทั่วไป ให้ใช้ enter แล้วตามด้วย enter-active เมื่อติดตั้ง และใช้ exit แล้วตามด้วย exit-active เมื่อนำออก คลาสพื้นฐานกำหนดสถานะเริ่มต้น ส่วนคลาสที่ทำงานอยู่กำหนดสถานะสิ้นสุดพร้อมการเปลี่ยนผ่าน
การสลับระหว่างสองคลาสในเฟรมที่เหมาะสมจะทำให้เกิดแอนิเมชัน
การรอฟังเมื่อการเปลี่ยนผ่านสิ้นสุด
หากต้องการทราบว่าแอนิเมชันตอนออกเสร็จเมื่อใด ให้รอฟังเหตุการณ์ transitionend บนองค์ประกอบ เมื่อเหตุการณ์เกิดขึ้นสำหรับการออก ให้เปลี่ยนสถานะเป็น unmounted แล้วนำโหนดออก
วิธีนี้ทำให้การถอดองค์ประกอบออกตรงกับจุดสิ้นสุดของแอนิเมชันที่มองเห็นได้อย่างแม่นยำ แทนการใช้ระยะหมดเวลาโดยประมาณ
คอมโพเนนต์การเปลี่ยนผ่านที่ใช้ซ้ำได้
คุณสามารถรวมทั้งหมดนี้ไว้ในคอมโพเนนต์ Transition ที่รับพร็อพ in และองค์ประกอบลูก คอมโพเนนต์จะคงองค์ประกอบลูกไว้ตลอดแอนิเมชันตอนออก และใช้คลาสที่เหมาะสมตามแต่ละเฟส
ผู้ใช้คอมโพเนนต์เพียงสลับค่า in ก็จะได้การเคลื่อนไหวตอนเข้าและตอนออกที่ถูกต้องโดยไม่ต้องจัดการเอง
การเรียกใช้คลาสที่ทำงานอยู่อย่างถูกต้อง
รายละเอียดเล็กน้อยที่สำคัญคือ คุณต้องปล่อยให้เบราว์เซอร์วาดคลาสเริ่มต้นก่อนเพิ่มคลาสที่ทำงานอยู่ มิฉะนั้นองค์ประกอบจะกระโดดโดยไม่มีการเปลี่ยนผ่าน การใช้ requestAnimationFrame หรือการบังคับให้เกิดการจัดเรียงเค้าโครงใหม่ระหว่างสองขั้นตอนจะทำให้การเปลี่ยนผ่านทำงานจริง
วิธีนี้ทำให้มั่นใจได้ว่าเบราว์เซอร์จะจดจำค่าเริ่มต้นก่อน
เปรียบเทียบกับ react-transition-group
ไลบรารี react-transition-group มีคอมโพเนนต์ Transition และ CSSTransition ที่ใช้รูปแบบนี้โดยตรง รวมถึงวงจรชีวิตของคลาสและจังหวะการถอดองค์ประกอบออก
เวอร์ชัน DIY ของคุณมีแนวคิดหลักเหมือนกัน จึงทำให้เข้าใจไลบรารีได้ง่ายเมื่อคุณสร้างรูปแบบนี้ด้วยตนเองแล้ว
เมื่อใดควรใช้ไลบรารีแทน DIY
สำหรับการค่อย ๆ ปรากฏแบบง่ายเพียงครั้งเดียว แนวทางคงองค์ประกอบไว้หรือฮุกขนาดเล็กก็เพียงพอและไม่ต้องเพิ่มการพึ่งพา สำหรับการเปลี่ยนผ่านที่ประสานกันหลายรายการ รายการที่มีการเพิ่มและนำออก หรือการจัดลำดับที่ซับซ้อน ไลบรารีจะช่วยประหยัดเวลาและลดข้อผิดพลาดในกรณีขอบ
ให้เลือกตามระดับความซับซ้อนของแอนิเมชันที่แอปของคุณต้องการจริง ๆ
นำทุกอย่างมาประกอบกัน
แอนิเมชันตอนออกจำเป็นต้องคงองค์ประกอบไว้จนกว่าแอนิเมชันจะเสร็จ ไม่ว่าจะใช้วิธีไม่ถอดองค์ประกอบออก ใช้เครื่องสถานะร่วมกับ transitionend หรือใช้ไลบรารี
ความเข้าใจกลไกเหล่านี้ช่วยให้คุณเลือกแนวทางที่เบาที่สุดและยังตอบโจทย์ความต้องการได้
ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับแอนิเมชันตอนออก
ทบทวน
คุณได้เรียนรู้ว่าเหตุใดแอนิเมชันตอนออกจึงทำได้ยาก วิธีแก้สองแบบ ได้แก่ การคงองค์ประกอบไว้และเครื่องสถานะการติดตั้ง วิธีใช้ transitionend กำหนดจังหวะการถอดองค์ประกอบออก และวิธีสร้างคอมโพเนนต์ Transition ที่นำกลับมาใช้ซ้ำได้
คุณยังได้เห็นว่าเมื่อใดควรเลือกใช้ react-transition-group แทน DIY
เรียนรู้ React ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 88
- บทเรียน
- 324
คำถามที่พบบ่อย
บทเรียน “แอนิเมชันเข้าและออกโดยไม่ใช้ไลบรารี” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “แอนิเมชันเข้าและออกโดยไม่ใช้ไลบรารี” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “แอนิเมชันเข้าและออกโดยไม่ใช้ไลบรารี”
สร้างแอนิเมชันเมื่อติดตั้งและถอดองค์ประกอบ โดยควบคุมจังหวะการแสดงผลและความทึบแสงด้วยตนเองใน React คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “แอนิเมชันเข้าและออกโดยไม่ใช้ไลบรารี” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม
ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การเปลี่ยนผ่าน CSS เมื่อสถานะ React เปลี่ยนแปลง
- แอนิเมชันคีย์เฟรม CSS ด้วย React
- ใช้ useLayoutEffect เพื่อวัดขนาดก่อนเริ่มแอนิเมชัน
- แอนิเมชันเข้าและออกโดยไม่ใช้ไลบรารี