useTrail และ useChain สำหรับลำดับแอนิเมชัน
ทำให้แอนิเมชันของหลายองค์ประกอบเริ่มเหลื่อมกันด้วย useTrail และควบคุมลำดับด้วย useChain
useTrail และ useChain สำหรับลำดับแอนิเมชัน เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
useTrail สำหรับแอนิเมชันแบบเหลื่อมจังหวะ
useTrail(count, config) จะสร้างสปริงจำนวน count ตัวที่แอนิเมชันต่อเนื่องกัน โดยกำหนดช่วงหน่วงระหว่างแต่ละตัวได้ เมื่อเริ่มลำดับ ตัวแรกจะแอนิเมชันทันที ตัวที่สองจะเริ่มช้าลงเล็กน้อย ตัวที่สามจะเริ่มหลังจากนั้น และต่อไปเรื่อย ๆ ทำให้เกิดเอฟเฟกต์การแผ่กระจายหรือการเรียงต่อกัน
ค่าที่ useTrail ส่งคืน
useTrail ส่งคืนอาร์เรย์ของออบเจ็กต์สปริง โดยมีหนึ่งออบเจ็กต์ต่อรายการ แต่ละสปริงมีโครงสร้างเหมือนกัน (มีคีย์เดียวกัน) แต่เริ่มแอนิเมชันในเวลาที่เหลื่อมกัน คุณจะแมปทั้งอาร์เรย์สปริงและอาร์เรย์รายการของคุณพร้อมกัน เพื่อเรนเดอร์แต่ละรายการที่เคลื่อนไหวด้วยสปริงที่ตรงกัน
การใช้ลำดับสปริงกับรายการ
เรนเดอร์รายการแบบเรียงลำดับโดยแมปผ่านอาร์เรย์สปริง: trail.map((spring, i) => React.createElement(animated.div, { style: spring, key: items[i].id }, items[i].content)) animated.div แต่ละตัวจะได้รับออบเจ็กต์สปริงของตัวเอง รายการต่าง ๆ จึงแอนิเมชันต่อเนื่องกัน สปริงจะทำงานตามลำดับดัชนี: 0, 1, 2, 3...
การควบคุมทิศทางของลำดับสปริง
useTrail รองรับรูปแบบตัวสลับสำหรับแอนิเมชันไปข้างหน้าและย้อนกลับ ส่งสถานะบูลีน open เพื่อควบคุมทิศทาง: เมื่อสถานะเปิดเป็นจริง ลำดับสปริงจะแอนิเมชันจากซ่อนอยู่ไปเป็นมองเห็นได้ และเมื่อเป็นเท็จ จะแอนิเมชันย้อนกลับจากมองเห็นได้ไปเป็นซ่อนอยู่ ลำดับสปริงจะย้อนลำดับโดยอัตโนมัติ รายการต่าง ๆ จึงแอนิเมชันออกตามลำดับย้อนกลับ (เข้าหลังสุด ออกก่อนสุด)
การกำหนดค่าและจังหวะเวลาของลำดับสปริง
ออบเจ็กต์การกำหนดค่าสำหรับ useTrail เหมือนกับของ useSpring ได้แก่ แรงตึง แรงเสียดทาน และมวล ช่วงหน่วงระหว่างรายการจะขึ้นอยู่กับเวลาที่สปริงแต่ละตัวใช้ในการเริ่มทำงาน ซึ่งถูกควบคุมโดยฟิสิกส์ของสปริงโดยรวม สปริงที่แข็งกว่าและมีแรงตึงสูงกว่าจะสร้างการเหลื่อมจังหวะที่เร็วกว่า ส่วนสปริงที่นุ่มนวลกว่าจะสร้างการเรียงต่อกันที่ยาวนานกว่า
useSpringRef สำหรับ useChain
useSpringRef() จะสร้างรีฟที่คุณนำไปผูกกับฮุกสปริงผ่านตัวเลือก ref รีฟนี้ช่วยให้ useChain ควบคุมได้ว่าสปริงนั้นจะเริ่มทำงานเมื่อใด คุณจะสร้างรีฟหนึ่งตัวต่อสปริงหรือลำดับสปริงที่ต้องการจัดลำดับ: const springRef = useSpringRef() จากนั้นส่งรีฟเข้าไปดังนี้: useSpring({ ref: springRef, ... })
useChain สำหรับการจัดลำดับต่อเนื่อง
useChain([ref1, ref2, ref3], [0, 0.5, 0.8]) จะจัดลำดับสปริงหรือลำดับสปริงหลายชุด อาร์กิวเมนต์แรกคืออาร์เรย์ของ springRefs ตามลำดับที่ควรทำงาน อาร์กิวเมนต์ที่สองคืออาร์เรย์ของการประทับเวลาระหว่าง 0 ถึง 1 ซึ่งระบุว่าสปริงแต่ละตัวจะเริ่มทำงานเมื่อใด โดยแสดงเป็นสัดส่วนของกรอบเวลารวม
ความหมายของการประทับเวลาใน useChain
ใน useChain การประทับเวลาอย่าง [0, 0.5] หมายความว่าสปริง 1 เริ่มทำงานที่ 0% ของลำดับ และสปริง 2 เริ่มทำงานที่ 50% ของลำดับ อาร์กิวเมนต์ที่สามซึ่งเป็นตัวเลือกคือกรอบเวลารวมในหน่วยมิลลิวินาที (ค่าเริ่มต้น 1000ms) ดังนั้นเมื่อใช้ [0, 0.5] และ 2000ms สปริง 1 จะเริ่มที่ 0ms และสปริง 2 จะเริ่มที่ 1000ms
ตัวอย่างการใช้ useChain ในทางปฏิบัติ
รูปแบบที่พบบ่อยคือ แอนิเมชันให้คอนเทนเนอร์ขยายตัว (ใช้ useSpring สำหรับขนาด) จากนั้นแอนิเมชันให้รายการด้านในค่อย ๆ ปรากฏ (ใช้ useTrail สำหรับรายการ) ผูกรีฟเข้ากับทั้งสองส่วน แล้วใช้ useChain([sizeRef, trailRef], [0, 0.5]) เพื่อให้คอนเทนเนอร์ขยายก่อน จากนั้นรายการจึงค่อย ๆ ปรากฏเมื่อผ่านไปครึ่งหนึ่ง วิธีนี้สร้างแอนิเมชันการปรากฏสองระยะในแบบภาพยนตร์
รูปแบบการเปลี่ยนหน้า
useChain เหมาะอย่างยิ่งสำหรับการเปลี่ยนหน้า เมื่อนำทางระหว่างหน้า ให้จัดลำดับแอนิเมชันการออกของหน้าเก่าเข้ากับแอนิเมชันการเข้าของหน้าใหม่ โดยให้แอนิเมชันการออกเสร็จก่อน (การประทับเวลา 0) แล้วจึงเริ่มแอนิเมชันการเข้า (การประทับเวลา 0.6) วิธีนี้สร้างการส่งต่อที่ราบรื่นแทนการสลับหน้าอย่างฉับพลัน
พารัลแลกซ์ด้วย useTrail
useTrail สามารถสร้างเอฟเฟกต์การเลื่อนแบบพารัลแลกซ์ได้ ด้วยการทำให้รายการต่าง ๆ เคลื่อนไหวด้วยความเร็วต่างกันตามตำแหน่งในลำดับ รายการที่อยู่ลึกกว่าในลำดับจะเริ่มช้ากว่า และอาจใช้การกำหนดค่าที่แตกต่างกัน (แรงตึงต่ำกว่า) ทำให้เคลื่อนที่ช้าลง จังหวะเวลาที่อิงตามความลึกนี้จำลองเอฟเฟกต์พารัลแลกซ์ของวัตถุที่อยู่ห่างจากกันต่างกัน
กลไกการเหลื่อมจังหวะของ useTrail
useTrail สร้างช่วงหน่วงที่เหลื่อมกันระหว่างรายการต่าง ๆ ในแอนิเมชันได้อย่างไร
ทบทวนบทเรียน: useTrail และ useChain
useTrail(count, config) จะสร้างสปริงจำนวน count ตัวที่แอนิเมชันต่อเนื่องกัน ทำให้รายการปรากฏแบบเหลื่อมจังหวะ แมปอาร์เรย์สปริงและรายการพร้อมกันเพื่อเรนเดอร์ useSpringRef() จะสร้างรีฟที่ useChain ใช้สำหรับจัดลำดับ useChain([ref1, ref2], [0, 0.5]) จะควบคุมสปริงหลายตัวด้วยการประทับเวลาแบบเศษส่วน ทั้งสองอย่างนี้ช่วยให้สร้างลำดับหลายระยะที่ซับซ้อนได้ เช่น แอนิเมชันขยายแล้วเปิดเผย
คำถามที่พบบ่อย
บทเรียน “useTrail และ useChain สำหรับลำดับแอนิเมชัน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “useTrail และ useChain สำหรับลำดับแอนิเมชัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “useTrail และ useChain สำหรับลำดับแอนิเมชัน”
ทำให้แอนิเมชันของหลายองค์ประกอบเริ่มเหลื่อมกันด้วย useTrail และควบคุมลำดับด้วย useChain คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “useTrail และ useChain สำหรับลำดับแอนิเมชัน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม
ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐาน React Spring: ฮุก useSpring
- คอมโพเนนต์แบบแอนิเมชันและการอินเทอร์โพเลตสไตล์
- useTrail และ useChain สำหรับลำดับแอนิเมชัน
- แอนิเมชันที่ขับเคลื่อนด้วยท่าทางด้วย use-gesture