React Academy · บทเรียน

แอนิเมชันเข้าและออกโดยไม่ใช้ไลบรารี

สร้างแอนิเมชันเมื่อติดตั้งและถอดองค์ประกอบ โดยควบคุมจังหวะการแสดงผลและความทึบแสงด้วยตนเองใน React

บทเรียน 4 จาก 413 ขั้นตอน

แอนิเมชันเข้าและออกโดยไม่ใช้ไลบรารี เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การเปลี่ยนผ่าน CSS เมื่อสถานะ React เปลี่ยนแปลง
  2. แอนิเมชันคีย์เฟรม CSS ด้วย React
  3. ใช้ useLayoutEffect เพื่อวัดขนาดก่อนเริ่มแอนิเมชัน
  4. แอนิเมชันเข้าและออกโดยไม่ใช้ไลบรารี
← กลับไปที่ React Academy