Κίνηση για React DOM · Το Animated API του React Native
Γράψτε την κίνηση μία φορά. Τρέχει ομαλά, δεν σπάει ποτέ.
Το Animated φέρνει το Animated του React Native στο web. Μία τιμή οδηγεί όσα στοιχεία θέλετε χωρίς απόδοση React σε κάθε καρέ, η υποστηριζόμενη κίνηση παίζεται από το ίδιο το πρόγραμμα περιήγησης και κάθε διακοπή συνεχίζει από ό,τι φαίνεται στην οθόνη.
npm install @kkwaenggwari/animatedΜία τιμή ρολογιού οδηγεί τα κύματα και των 64 σχημάτων. Μετακινήστε τον δείκτη πάνω από τη σκηνή.
Μετρημένο σε αυτή την έκδοση
Μετρημένο με το build 1.0.0 σε headless Chrome σε επιτραπέζιο PC. Οι αριθμοί εξαρτώνται από τη συσκευή. Πώς μετρήσαμε
- 0.00msJavaScript ανά καρέ ενώ κινούνται 400 στοιχεία
Η πεπερασμένη κίνηση transform και opacity στα στοιχεία Animated παίζεται από το πρόγραμμα περιήγησης. Τα callbacks καρέ της σελίδας δεν κάνουν καμία δουλειά.
- 0.13msJavaScript ανά καρέ όταν μία τιμή οδηγεί 10.000 στοιχεία
Η τιμή γράφει μία μεταβλητή CSS· κάθε στοιχείο παράγει από αυτήν το δικό του στυλ στο CSS.
- 0Αποδόσεις React κατά την κίνηση
Οι τιμές δεν περνούν ποτέ από την κατάσταση του React. Τα components αποδίδονται όταν αλλάζουν τα props σας, όχι όταν αλλάζει το καρέ.
01 · Απλό
Το API που ήδη ξέρετε, σε απλό style του React
Τα timing, spring, interpolate, loop και Animated.event κρατούν τα ονόματα και τις ρυθμίσεις του React Native. Η τιμή μπαίνει κατευθείαν στο απλό prop style, οπότε δεν χρειάζεται να μάθετε κάποιο ειδικό component πριν από την πρώτη κίνηση.
- Μεταφέρετε κώδικα από το React Native μετονομάζοντας το
Animated.ViewσεAnimated.div. - Μία τιμή μπορεί να κινεί ταυτόχρονα μια ταινία, έναν δίσκο και μια σειρά καρτών, το καθένα με το δικό του εύρος.
- Το
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 σε κάθε καρέ
Η τιμή ενός hook είναι μεταβλητή CSS. Οι γραμμικές παρεμβολές και η αριθμητική γίνονται ακριβείς εκφράσεις calc() αυτής της μεταβλητής, οπότε κάθε καρέ είναι μία εγγραφή και τα υπόλοιπα τα υπολογίζει το πρόγραμμα περιήγησης. Η πεπερασμένη κίνηση transform και opacity στα στοιχεία Animated.<tag> παίζεται από το πρόγραμμα περιήγησης χωρίς callbacks καρέ.
- Αλλάξτε τον αριθμό των κουκκίδων: ο μετρητής δείχνει ότι το React απέδωσε μία φορά ανά αλλαγή, ποτέ ανά καρέ.
- Το
scopeγράφει την τιμή μία φορά στο κοντέινερ αντί για κάθε στοιχείο. - Το
inspect(element)λέει ποια διαδρομή χρησιμοποιεί κάθε ιδιότητα και γιατί.
Προετοιμασία παραδείγματος…
03 · Σταθερό
Διακόψτε το οπουδήποτε. Συνεχίζει.
Ένας νέος στόχος ξεκινά από εκεί που βρίσκεται το στοιχείο στην οθόνη, και ένα ελατήριο κρατά και την ταχύτητα, οπότε μια αναστροφή στη μέση της διαδρομής καμπυλώνει ομαλά αντί να σταματήσει πρώτα. Οι ελεγκτές που δηλώνονται σε ένα hook σταματούν και απελευθερώνονται κατά την αντικατάσταση και την αποπροσάρτηση, και το markup που αποδόθηκε στον διακομιστή συνεχίζει να κινείται μετά το hydration.
- Κάντε κλικ δύο φορές γρήγορα: με
springη τροχιά καμπυλώνει, μεtimingη θέση κρατιέται αλλά ξεκινά νέα καμπύλη. - Η διακοπή αφήνει την τιμή εκεί που είναι· τίποτα δεν πηδά στην τελική κατάσταση.
- Κανένας ξεχασμένος βρόχος καρέ μετά από αποπροσάρτηση, αλλαγή διαδρομής ή κρυφή καρτέλα.
Προετοιμασία παραδείγματος…
Τι μπορείτε να φτιάξετε
Πλήρη μοτίβα με ρυθμιζόμενες επιλογές και ολόκληρο τον κώδικα πηγής.
Όλα τα παραδείγματα- Μαγνητική μπάραΤα εικονίδια μεγαλώνουν καθώς περνά ο δείκτης, σπρώχνουν τα γειτονικά στην άκρη και ηρεμούν όταν φύγει.
moveInputfollowuseAnimatedCSSmultiply - Τράπουλα σάρωσηςΣύρετε την πάνω κάρτα. Πέρα από το όριο πετά μακριά· αλλιώς επιστρέφει με ελατήριο.
dragInputuseAnimatedListenerAnimated.div - Κοινή γκαλερίΈνα πλακίδιο μεγαλώνει σε προβολή λεπτομερειών και μικραίνει πίσω στο πλέγμα.
Animated.SceneAnimated.Keepmove
Χτισμένο με Animated
Χρειάζεστε έτοιμο component; Animated Chorus.
Αριθμοί που κυλούν, επισημάνσεις καρτών που ταξιδεύουν, πρόοδος, sheets και κινούμενες λίστες που μπαίνουν απευθείας σε React και React Native. Αυτά τα τρία τρέχουν τώρα σε αυτή τη σελίδα.
Επισκεφθείτε το Animated ChorusΞεκινήστε σε τρία λεπτά
Εγκαταστήστε το πακέτο, κινήστε μια πρώτη τιμή και μετά επιλέξτε οδηγό για την εργασία που έχετε μπροστά σας.
npm install @kkwaenggwari/animated