React DOM साठी मोशन · React Native Animated API
मोशन एकदा लिहा. ते सुरळीत चालते आणि कधीही तुटत नाही.
Animated, React Native चे Animated वेबवर आणते. एक मूल्य प्रत्येक फ्रेममध्ये React रेंडर न करता कितीही एलिमेंट्स चालवते, समर्थित मोशन ब्राउझरमध्येच चालते, आणि प्रत्येक व्यत्यय स्क्रीनवर दिसणाऱ्या स्थितीपासून पुढे जातो.
npm install @kkwaenggwari/animatedएकच घड्याळ मूल्य सर्व 64 आकारांची लाट चालवते. मंचावर पॉइंटर फिरवा.
या प्रकाशनावर मोजले
डेस्कटॉप PC वर headless Chrome मध्ये 1.0.0 build ने मोजले. आकडे उपकरणानुसार बदलतात. आम्ही कसे मोजले
- 0.00ms400 एलिमेंट्स हलताना प्रति फ्रेम JavaScript
Animated एलिमेंट्सवरील मर्यादित transform आणि opacity मोशन ब्राउझरमध्ये चालते. पानाचे स्वतःचे फ्रेम callback कोणतेही काम करत नाहीत.
- 0.13msएक मूल्य 10,000 एलिमेंट्स चालवताना प्रति फ्रेम JavaScript
मूल्य एकच CSS व्हेरिएबल लिहिते; प्रत्येक एलिमेंट त्यातून CSS मध्ये आपली शैली मिळवतो.
- 0मोशनदरम्यान React रेंडर
मूल्ये कधीही React state मधून जात नाहीत. फ्रेम बदलल्यावर नाही, तर तुमचे props बदलल्यावर कंपोनंट रेंडर होतात.
01 · सोपे
तुम्हाला आधीच माहीत असलेले API, साध्या React style वर
timing, spring, interpolate, loop आणि Animated.event त्यांची React Native नावे आणि कॉन्फिगरेशन राखतात. मूल्य थेट साध्या style prop मध्ये जाते, त्यामुळे पहिल्या मोशनपूर्वी शिकायचा विशेष कंपोनंट नाही.
Animated.Viewचे नावAnimated.divकरून React Native कोड आणा.- एक मूल्य एक पट्टी, एक डायल आणि कार्डांची रांग एकाच वेळी, प्रत्येकाला स्वतःच्या श्रेणीसह, हलवू शकते.
useAnimatedकृती सांभाळते: माउंटवर सुरू होते, अवलंबित्व बदलल्यावर पुन्हा सुरू होते आणि अनमाउंटवर स्वच्छता करते.
उदाहरण तयार होत आहे…
React Native मधीलच कॉल
// React Native
<Animated.View style={{ transform: [{ rotate }] }} />
// React DOM with @kkwaenggwari/animated — the rest is identical
<Animated.div style={{ transform: [{ rotate }] }} />
const spin = useAnimatedValue(0);
const rotate = spin.interpolate({ inputRange: [0, 1], outputRange: ['0deg', '360deg'] });
Animated.loop(
Animated.timing(spin, { toValue: 1, duration: 900, easing: Easing.linear, useNativeDriver: true }),
).start();02 · वेगवान
प्रति फ्रेम React रेंडर नाही
हुक मूल्य हे CSS व्हेरिएबल आहे. रेषीय interpolation आणि अंकगणित त्या व्हेरिएबलच्या अचूक calc() अभिव्यक्ती बनतात, त्यामुळे प्रत्येक फ्रेम एकच लेखन असते आणि बाकीचे ब्राउझर मोजतो. Animated.<tag> एलिमेंट्सवरील मर्यादित transform आणि opacity मोशन फ्रेम callback शिवाय ब्राउझरमध्ये चालते.
- ठिपक्यांची संख्या बदला: काउंटर दाखवतो की React प्रत्येक बदलासाठी एकदा रेंडर झाले, प्रति फ्रेम कधीही नाही.
scopeमूल्य प्रत्येक एलिमेंटवर नाही, तर एका कंटेनरवर एकदा लिहिते.inspect(element)प्रत्येक गुणधर्म कोणता मार्ग वापरतो आणि का ते सांगते.
उदाहरण तयार होत आहे…
03 · स्थिर
कुठेही व्यत्यय आणा. ते पुढे चालू राहते.
नवीन लक्ष्य एलिमेंट स्क्रीनवर जिथे आहे तिथून सुरू होते, आणि spring आपला वेगही राखतो, त्यामुळे मध्येच दिशा बदलल्यास आधी न थांबता सुरळीत वळते. हुकमध्ये घोषित केलेले कंट्रोलर बदलताना आणि अनमाउंटवेळी थांबवून मोकळे केले जातात, आणि सर्व्हरवर रेंडर झालेला मार्कअप hydration नंतरही ॲनिमेट होत राहतो.
- दोनदा पटकन क्लिक करा:
springसह मार्ग वाकतो,timingसह स्थिती राखून नवीन वक्र सुरू होतो. - थांबवल्यावर मूल्य जिथे आहे तिथेच राहते; काहीही शेवटच्या स्थितीकडे उडी घेत नाही.
- अनमाउंट, route बदल किंवा लपलेल्या टॅबनंतर भटकणारी फ्रेम लूप नाहीत.
उदाहरण तयार होत आहे…
- चुंबकीय डॉकपॉइंटर जाताना आयकॉन मोठे होतात, शेजाऱ्यांना बाजूला ढकलतात, आणि तो गेल्यावर स्थिरावतात.
moveInputfollowuseAnimatedCSSmultiply - स्वाइप डेकवरचे कार्ड ओढा. मर्यादा ओलांडल्यास ते उडून जाते; अन्यथा spring ने परत येते.
dragInputuseAnimatedListenerAnimated.div - सामायिक गॅलरीएक टाइल तपशील दृश्यात वाढते आणि पुन्हा ग्रिडमध्ये लहान होते.
Animated.SceneAnimated.Keepmove
Animated वर बांधलेले
तयार कंपोनंट हवा आहे? Animated Chorus.
घरंगळणारे आकडे, प्रवास करणारे टॅब हायलाइट, प्रगती, शीट्स आणि ॲनिमेटेड सूची — React आणि React Native मध्ये थेट बसतात. यापैकी तीन आत्ता या पानावर चालू आहेत.
Animated Chorus ला भेट द्यातीन मिनिटांत सुरुवात करा
पॅकेज इन्स्टॉल करा, पहिले मूल्य हलवा, मग तुमच्या समोरच्या कामासाठी मार्गदर्शक निवडा.
npm install @kkwaenggwari/animated