React · React Native · 16 רכיבים
אינטראקציות קשות, מוכנות.
Animated Chorus הוא אוסף רכיבי תנועה לאינטראקציות שקשה לעשות נכון ביד: מספרים מתגלגלים, טקסט בזרימה, החלפות שמשנות גודל, גיליונות, מחליפי עמודים, פעולות החלקה ורשימות שמנפישות רק את מה שהשתנה. תגית אחת והנתונים שלכם. בלי provider, בלי הגדרות.
npm install @kkwaenggwari/animated-chorusנמדד על הבנייה הזו
Chrome, 2026-09-28. כל התנאים והדגימות נמצאים במדריך הביצועים. איך נמדד
- 28.0KBKB gzip לכל 16 ה־exports
כל נקודת הכניסה לאינטרנט, מוקטנת. React היא תלות ה־peer היחידה.
- 0callbacks של פריים ב־JS בזמן אנימציה
מספר, גובה והדגשה משתנים יחד: הדפדפן מנגן את כל 12 האנימציות.
- 1commit של React לכל שינוי ערך
MotionNumberמתרנדר כשהערך משתנה, אף פעם לא בזמן שהוא מתגלגל. - 11commits של React ל־3000 תווים בזרימה
MotionStreamמוסיף תווים ישירות ומכניס אותם ל־React כמה פעמים בשנייה.
01הכי פשוט
תגית אחת והנתונים שלכם
כל רכיב עובד לבד: בלי provider, רכיב עוטף או קריאת הגדרה. אוספים מקבלים items ו־renderItem, והפריסה, הטקסטים והסגנונות נשארים שלכם.
- ייבאו רכיב אחד והעבירו ערך. זו כל האינטגרציה.
- רשימות, לשוניות ומחליפי עמודים קוראים את המערך שלכם; המפתחות הם
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} />;
שישה רכיבים חיים, ושורת הקוד האחת שמאחורי כל אחד.
מכין את הדוגמה…
02הכי מהיר
הדפדפן מנגן. React נשאר במקום.
באינטרנט אין ספריית אנימציה לטעון: הרכיבים מעבירים את התנועה ל־Web Animations API, כך שמספר מתגלגל או לוח שמשנה גודל לא עולים JavaScript לפריים ולא רינדור React בזמן התנועה.
- 0 callbacks של פריים ב־JS בזמן ש־12 אנימציות רצות יחד.
- commit אחד של React לכל שינוי ערך, לא אחד לכל פריים.
- טקסט בזרימה: 11 commits של React ל־3000 תווים. הדוגמה שלמטה סופרת את הרינדורים שלה.
מכין את הדוגמה…
03הכי יציב
הפריעו לכל דבר. שום דבר לא קופץ.
כל ערך חדש מתחיל ממה שעל המסך וקפיצים שומרים על המהירות שלהם, כך שלחיצות מהירות, פרצי נתונים והיפוכים נראים מכוונים. כשהתנועה נגמרת, שום דבר לא נשאר רץ.
- מספרים לעולם לא מתפצלים: הספרות שנשארות מחליקות בזמן שהן מתגלגלות.
- 200 ערכים חדשים בהפרש של 5 ms: אחריהם נשארות 0 אנימציות, והטקסט הסופי מדויק.
- בטוח תחת React StrictMode. באפליקציית React Native ברקע, התנועה מגיעה למצב הסופי שלה.
מכין את הדוגמה…
16 רכיבים, מקובצים לפי התפקיד שלהם
מספרים וטקסט, תוכן שמשנה גודל, בחירה, רשימות, מחוות, שכבות־על והתקדמות. לכל אחד יש שולחן עבודה חי עם ה־props שלו בצד.
כל הרכיביםמספרים וטקסט
תוכן וגודל
בחירה ודפדוף
רשימות
מחוות
שכבות־על
התקדמות
- תשובה בצ׳אטהצעות שמתקפלות, תשובה שזורמת בקצב קבוע ושורת סטטוס שמתחלפת.
MotionStreamMotionListMotionSwapMotionHeight - סיכום תשלוםכמויות, סכומי שורות והסכום הכולל מתגלגלים כשהעגלה משתנה; הודעת הקופון נכנסת ויוצאת; תשלום דורש החזקה מכוונת.
MotionListMotionNumberMotionPresenceMotionHold - תיבת דוארלשוניות סינון עם ספירות חיות, שורות שאפשר להחליק הצידה ורשימה שסוגרת את הרווח.
MotionHighlightMotionListMotionSwipeMotionNumber - פיד תמונותהחליקו בין תמונות, קפצו בעזרת תמונות ממוזערות, פתחו כל תמונה במסך מלא ומשכו למעלה את הפרטים שלה.
MotionPagerMotionHighlightMotionZoomMotionSheet
אותו ייבוא באינטרנט וב־React Native
Metro בוחר את המימוש הנייטיב ו־bundlers של אינטרנט בוחרים את מימוש ה־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} />
</>
);
}| חלק | אינטרנט | React Native |
|---|---|---|
| Transform ו־opacity | Web Animations API, קפיצים שנדגמים אנליטית | Animated עם ה־driver הנייטיב |
| רוחב וגובה | Web Animations API | Animated עם ה־driver של JS, כי זו פריסה |
| טקסט בזרימה | תווים שנוספים ומופיעים בהדרגה; כמה רינדורים של React בשנייה | Text אמיתי, נחשף בלי דעיכה |
| גיליונות וזום | dialog נייטיב בשכבה העליונה | Modal שקוף; כפתור החזרה סוגר אותו |
מתחילים בשתי דקות
מתקינים, מייבאים רכיב אחד, מעבירים ערך.
npm install @kkwaenggwari/animated-chorus