Semua komponen
MotionSwap
Konten yang bertukar dengan crossfade sementara ukurannya mengikuti.
WebReact NativeKonten dan ukuran
Coba
Penggunaan terpendek
SaveButton.jsx<button onClick={save}>
<MotionSwap value={status} effect="up">
{status === 'saving' ? 'Saving…' : status === 'saved' ? 'Saved' : 'Save'}
</MotionSwap>
</button>;
Yang ditanganinya untuk Anda
- Elemen berubah ukuran dari ukurannya di layar ke ukuran alami konten baru, jadi tombol tidak pernah melompat.
- Konten lama memudar di tempatnya sementara konten baru muncul; tidak ada yang tersusun ulang selama pertukaran.
- Mengubah kembali di tengah pertukaran melanjutkan dari yang ada di layar, bukan menumpuk salinan.
- Children berupa teks biasa adalah
value-nya sendiri; berikan value untuk hal lain.
Gunakan untuk
- Simpan, lalu Menyimpan…, lalu Tersimpan.
- Kerangka yang berubah menjadi kartu profil.
- Tombol putar yang berubah menjadi jeda.
Props
| Prop | Tipe | Bawaan | Deskripsi |
|---|
value | unknown | | Identitas konten; nilai baru memicu pertukaran. Children berupa teks biasa adalah identitasnya sendiri. |
|---|
children | ReactNode | | Kontennya. |
|---|
as | element | 'span' | Elemen yang dirender. |
|---|
inline | boolean | as === 'span' | true menyesuaikan ukuran dengan konten (label, ikon); false mengisi lebar induk dan menganimasikan tinggi. |
|---|
align | 'start' | 'center' | 'end' | 'center' | Posisi konten selama ukuran berubah. |
|---|
effect | 'fade' | 'up' | 'down' | 'scale' | 'fade' | Cara konten masuk dan pergi: up naik, down turun, scale membesar. |
|---|
transition | Transition | spring | Kurva timing { duration, easing } atau pegas { tempo: 'spring', spring }. Pegas mempertahankan momentumnya saat diinterupsi. |
|---|
onMotionComplete | (value) => void | | Berjalan saat gerak berhenti. |
|---|
Semua props lain diteruskan ke elemen yang dirender, jadi className, style, dan event handler bekerja seperti biasa.
Dipakai di contoh-contoh ini