React · React Native · 16 components
Δύσκολες αλληλεπιδράσεις, έτοιμες.
Το Animated Chorus είναι ένα σύνολο από components κίνησης για αλληλεπιδράσεις που είναι δύσκολο να γίνουν σωστά με το χέρι: αριθμοί που κυλούν, κείμενο σε ροή, εναλλαγές που αλλάζουν μέγεθος, sheets, pagers, ενέργειες σάρωσης και λίστες που κινούν μόνο ό,τι άλλαξε. Μία ετικέτα και τα δεδομένα σας. Χωρίς provider, χωρίς ρύθμιση.
npm install @kkwaenggwari/animated-chorusΜετρημένο σε αυτή την έκδοση
Chrome, 2026-09-28. Όλες οι συνθήκες και τα δείγματα βρίσκονται στον οδηγό απόδοσης. Πώς μετρήθηκε
- 28.0KBKB gzip για όλα τα 16 exports
Ολόκληρο το σημείο εισόδου web, συμπιεσμένο. Το React είναι το μόνο peer.
- 0Callbacks καρέ JS κατά την κίνηση
Ένας αριθμός, ένα ύψος και μια επισήμανση αλλάζουν μαζί: το πρόγραμμα περιήγησης παίζει και τις 12 κινήσεις.
- 1React commit ανά αλλαγή τιμής
Το
MotionNumberαποδίδεται όταν αλλάζει η τιμή, ποτέ ενώ κυλά. - 11React commits για 3000 χαρακτήρες σε ροή
Το
MotionStreamπροσθέτει χαρακτήρες απευθείας και τους ενσωματώνει στο React λίγες φορές το δευτερόλεπτο.
01Το πιο εύκολο
Μία ετικέτα και τα δεδομένα σας
Κάθε component λειτουργεί μόνο του: χωρίς provider, component περιτύλιξης ή κλήση ρύθμισης. Οι συλλογές δέχονται items και renderItem, και η διάταξη, το κείμενο και τα στυλ σας μένουν δικά σας.
- Εισαγάγετε ένα component και δώστε μια τιμή. Αυτή είναι όλη η ενσωμάτωση.
- Οι λίστες, οι καρτέλες και οι pagers διαβάζουν τον πίνακά σας· τα keys είναι από προεπιλογή
item.id. - Το κείμενο μένει πραγματικό κείμενο: αναδιπλώνεται, κλιμακώνεται με τη γραμματοσειρά και μπορεί να επιλεγεί.
<MotionNumber value={total} />;<MotionSwap value={status}>{label}</MotionSwap>;<MotionHeight open={open}>{details}</MotionHeight>;<MotionHighlight items={tabs} value={tab} onValueChange={setTab} />;<MotionList items={tasks} renderItem={(task) => task.title} />;<ProgressRing value={progress} />;
Έξι ζωντανά components και η μία γραμμή κώδικα πίσω από το καθένα.
Προετοιμασία παραδείγματος…
02Το πιο γρήγορο
Το πρόγραμμα περιήγησης παίζει. Το React μένει ακίνητο.
Στο web δεν χρειάζεται να φορτωθεί βιβλιοθήκη κίνησης: τα components παραδίδουν την κίνησή τους στο Web Animations API, οπότε ένας αριθμός που κυλά ή ένα πάνελ που αλλάζει μέγεθος δεν κοστίζει JavaScript ανά καρέ ούτε απόδοση React όσο κινείται.
- 0 callbacks καρέ JS ενώ τρέχουν μαζί 12 κινήσεις.
- Ένα React commit ανά αλλαγή τιμής, όχι ένα ανά καρέ.
- Κείμενο σε ροή: 11 React commits για 3000 χαρακτήρες. Το παράδειγμα παρακάτω μετρά τις δικές του αποδόσεις.
Προετοιμασία παραδείγματος…
03Το πιο σταθερό
Διακόψτε οτιδήποτε. Δεν πηδά ποτέ.
Κάθε νέα τιμή ξεκινά από ό,τι φαίνεται στην οθόνη και τα ελατήρια κρατούν την ταχύτητά τους, οπότε τα γρήγορα κλικ, οι ριπές δεδομένων και οι αναστροφές φαίνονται σκόπιμα. Όταν τελειώνει η κίνηση, τίποτα δεν μένει να τρέχει.
- Οι αριθμοί δεν διασπώνται ποτέ: τα υπόλοιπα ψηφία γλιστρούν ενώ κυλούν.
- 200 νέες τιμές με απόσταση 5 ms: μετά απομένουν 0 κινήσεις και το ακριβές τελικό κείμενο.
- Ασφαλές στο React StrictMode. Σε εφαρμογή React Native στο παρασκήνιο, η κίνηση πηγαίνει στην τελική της κατάσταση.
Προετοιμασία παραδείγματος…
16 components, ομαδοποιημένα ανά δουλειά
Αριθμοί και κείμενο, περιεχόμενο που αλλάζει μέγεθος, επιλογή, λίστες, χειρονομίες, επικαλύψεις και πρόοδος. Το καθένα έχει ζωντανό πάγκο εργασίας με τα props του στο πλάι.
Όλα τα componentsΑριθμοί και κείμενο
Περιεχόμενο και μέγεθος
Επιλογή και σελιδοποίηση
Λίστες
Χειρονομίες
Επικαλύψεις
Πρόοδος
Μαζί
Πλήρεις οθόνες που συνδυάζουν πολλά components, το καθένα με τις ρυθμίσεις του έξω από το παράδειγμα.
Όλα τα παραδείγματα- Απάντηση σε συνομιλίαΠροτάσεις που διπλώνουν, μια απάντηση σε ροή με σταθερό ρυθμό και μια γραμμή κατάστασης που εναλλάσσεται.
MotionStreamMotionListMotionSwapMotionHeight - Σύνοψη ολοκλήρωσης αγοράςΟι ποσότητες, τα σύνολα γραμμών και το συνολικό ποσό κυλούν καθώς αλλάζει το καλάθι· η ειδοποίηση κουπονιού μπαίνει και βγαίνει· η πληρωμή απαιτεί σκόπιμο παρατεταμένο πάτημα.
MotionListMotionNumberMotionPresenceMotionHold - ΕισερχόμεναΚαρτέλες φίλτρων με ζωντανούς μετρητές, γραμμές που απομακρύνονται με σάρωση και μια λίστα που κλείνει το κενό.
MotionHighlightMotionListMotionSwipeMotionNumber - Ροή φωτογραφιώνΣαρώστε φωτογραφίες, πηδήξτε με μικρογραφίες, ανοίξτε οποιαδήποτε φωτογραφία σε πλήρη οθόνη και τραβήξτε προς τα πάνω τις λεπτομέρειές της.
MotionPagerMotionHighlightMotionZoomMotionSheet
Το ίδιο import σε web και React Native
Το Metro επιλέγει την native υλοποίηση και οι bundlers του web την υλοποίηση DOM. Κάθε πλατφόρμα παίζει την κίνηση με τον τρόπο που ξέρει καλύτερα.
// Web and React Native: the same import.
import { MotionNumber, MotionList } from '@kkwaenggwari/animated-chorus';
export function Score({ points, players }) {
return (
<>
<MotionNumber value={points} />
<MotionList items={players} renderItem={(player) => player.name} />
</>
);
}| Μέρος | Web | React Native |
|---|---|---|
| Μετασχηματισμοί και αδιαφάνεια | Web Animations API, ελατήρια με αναλυτική δειγματοληψία | Animated με τον native driver |
| Πλάτος και ύψος | Web Animations API | Animated με τον JS driver, επειδή είναι διάταξη |
| Κείμενο σε ροή | Χαρακτήρες που προστίθενται και εμφανίζονται σταδιακά· λίγες αποδόσεις React το δευτερόλεπτο | Πραγματικό Text, χωρίς σβήσιμο |
| Sheets και ζουμ | Ένα native dialog στο ανώτατο επίπεδο | Ένα διαφανές Modal· το κουμπί επιστροφής το κλείνει |
Ξεκινήστε σε δύο λεπτά
Εγκαταστήστε, εισαγάγετε ένα component, δώστε μια τιμή.
npm install @kkwaenggwari/animated-chorus