כל הרכיבים

MotionSwap

תוכן שמתחלף בדעיכה צולבת בזמן שהגודל עוקב.

אינטרנטReact Nativeתוכן וגודל

נסו את זה

מכין את הדוגמה…

השימוש הקצר ביותר

SaveButton.jsx
<button onClick={save}>
  <MotionSwap value={status} effect="up">
    {status === 'saving' ? 'Saving…' : status === 'saved' ? 'Saved' : 'Save'}
  </MotionSwap>
</button>;

מה הוא עושה בשבילכם

  • האלמנט משנה גודל מהגודל שלו על המסך לגודל הטבעי של התוכן החדש, כך שכפתורים לעולם לא קופצים.
  • התוכן הישן דועך במקומו בזמן שהחדש מופיע; אף אחד מהם לא זורם מחדש במהלך ההחלפה.
  • חזרה אחורה באמצע החלפה ממשיכה ממה שעל המסך במקום לערום עותקים.
  • ילדים של טקסט פשוט הם ה־value של עצמם; העבירו value לכל השאר.

מתאים ל־

  • שמירה, ואז שומר…, ואז נשמר.
  • שלד שהופך לכרטיס פרופיל.
  • כפתור ניגון שהופך להשהיה.

Props

Propטיפוסברירת מחדלתיאור
valueunknownזהות התוכן; ערך חדש מחליף. ילדים של טקסט פשוט הם הזהות של עצמם.
childrenReactNodeהתוכן.
aselement'span'האלמנט לרינדור.
inlinebooleanas === 'span'true מתאים את הגודל לתוכן (תוויות, אייקונים); false ממלא את רוחב ההורה ומנפיש גובה.
align'start' | 'center' | 'end''center'איפה התוכן יושב בזמן שהגודל משתנה.
effect'fade' | 'up' | 'down' | 'scale''fade'איך התוכן נכנס ויוצא: up עולה, down יורד, scale גדל.
transitionTransitionspringעקומת timing { duration, easing } או קפיץ { tempo: 'spring', spring }. קפיצים שומרים על התנופה שלהם כשמפריעים להם.
onMotionComplete(value) => voidרץ כשהתנועה מתייצבת.

props אחרים עוברים לאלמנט המרונדר, כך ש־className, style ומטפלי אירועים עובדים כרגיל.

אינטרנט ו־React Native

inline (ברירת המחדל כשמרונדר כ־span) מנפיש רוחב וגובה; inline={false} ממלא את רוחב ההורה ומנפיש גובה.

ב־React Native החלפות inline מודדות את התוכן החדש בשורה אחת; השתמשו ב־inline={false} לתוכן שנשבר לשורות.

בשימוש בדוגמאות האלה

חיפוש

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