كل المكوّنات
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 | النوع | الافتراضي | الوصف |
|---|
value | unknown | | هوية المحتوى؛ والقيمة الجديدة تبدّله. الأبناء النصية هي هويتها. |
|---|
children | ReactNode | | المحتوى. |
|---|
as | element | 'span' | العنصر المراد عرضه. |
|---|
inline | boolean | as === 'span' | يتحجّم true حسب المحتوى (تسميات، أيقونات)؛ ويملأ false عرض الأب ويحرّك الارتفاع. |
|---|
align | 'start' | 'center' | 'end' | 'center' | أين يقع المحتوى أثناء تغيّر الحجم. |
|---|
effect | 'fade' | 'up' | 'down' | 'scale' | 'fade' | كيف يدخل المحتوى ويخرج: up يصعد، وdown يهبط، وscale يكبر. |
|---|
transition | Transition | spring | منحنى توقيت { duration, easing } أو نابض { tempo: 'spring', spring }. تحتفظ النوابض بزخمها عند المقاطعة. |
|---|
onMotionComplete | (value) => void | | يعمل حين تستقر الحركة. |
|---|
تذهب props الأخرى إلى العنصر المعروض، فتعمل className وstyle ومعالجات الأحداث كالمعتاد.