Panduan · 08
Performa dan pemutaran
Bagaimana Animated menghindari kerja per frame, cara memeriksa jalur yang dipakai elemen, dan bagaimana angka di beranda diukur.
Tiga jalur pemutaran
Animated memilih jalur per properti. API tidak berubah mengikuti jalurnya.
| Jalur | Kapan | Kerja per frame |
|---|---|---|
| browser | Gerak transform dan opacity yang terbatas pada elemen Animated.<tag>, termasuk pegas | Tidak ada di JavaScript halaman |
| css | Kurva tepat yang dapat dinyatakan browser dengan keyframe CSS bersama | Tidak ada di JavaScript halaman |
| js | Variabel gaya biasa, input, perhitungan sendiri, dan batas sequence | Satu penulisan per nilai, tanpa render React |
Satu nilai, banyak elemen
Turunan dari nilai hook adalah ekspresi calc(). Dengan scope, satu penulisan variabel per frame menggerakkan setiap elemen di dalam wadah.
Menyiapkan contoh…
Periksa jalurnya
inspect(element) mengembalikan driver dan alasan fallback untuk setiap properti beranimasi selama eksekusi nyata.
import { inspect } from '@kkwaenggwari/animated';
console.table(inspect(element));
// property driver reason
// transform browser null
// opacity css null
// --level js css-variable-requires-jsDimulai dari frame pertama
Saat tugas yang memulai gerak membuat thread utama sibuk, seperti hidrasi atau commit besar, gerak dimulai ulang setelah pekerjaan itu selesai alih-alih tampak sudah berjalan. Gerak yang dimulai di halaman tersembunyi selesai di latar belakang.
Cara angka di beranda diukur
Setiap skenario dijalankan di halaman baru setelah satu pemanasan, dengan tiga sampel terekam, dan yang dilaporkan adalah median. Waktu JavaScript adalah waktu yang dihabiskan di dalam callback animation-frame selama gerak berjalan. Ini tidak mencakup gaya, tata letak, dan paint yang dikerjakan browser untuk setiap pendekatan, jadi ini bukan ukuran total CPU atau frame rate.
Pemutaran oleh browser tidak membuat tata letak, paint, compositing, atau memori menjadi gratis. Ukur layar sesungguhnya di perangkat yang Anda dukung.
| Skenario | Penyiapan | Hasil |
|---|---|---|
| 400 Animated.div elements move translateX and fade in (timing, 1800 ms) | seed/pose/tempo on Animated.div; 800 browser animations | 0.00 ms |
| One useAnimated value drives 10,000 elements in ordinary style (loop, 1200 ms) | transform and opacity as calc() of one CSS variable written on a scope element | 0.13 ms |
2026-09-28 · Chrome 153.0.8010.52 (headless) · Windows_NT x64 · Intel(R) Core(TM) i7-14700K