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 שלו בצד.

כל הרכיבים

אותו ייבוא באינטרנט וב־React Native

Metro בוחר את המימוש הנייטיב ו־bundlers של אינטרנט בוחרים את מימוש ה־DOM. כל פלטפורמה מנגנת תנועה בדרך הטובה ביותר שלה.

App.jsx
// 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 ו־opacityWeb Animations API, קפיצים שנדגמים אנליטיתAnimated עם ה־driver הנייטיב
רוחב וגובהWeb Animations APIAnimated עם ה־driver של JS, כי זו פריסה
טקסט בזרימהתווים שנוספים ומופיעים בהדרגה; כמה רינדורים של React בשנייהText אמיתי, נחשף בלי דעיכה
גיליונות וזוםdialog נייטיב בשכבה העליונהModal שקוף; כפתור החזרה סוגר אותו

מתחילים בשתי דקות

מתקינים, מייבאים רכיב אחד, מעבירים ערך.

npm install @kkwaenggwari/animated-chorus

חיפוש

הקלידו כדי לחפש בתיעוד.