Ghiduri · 08
Performanță și redare
Cum evită Animated munca la fiecare cadru, cum verificați ce cale folosește un element și cum au fost măsurate cifrele de pe pagina principală.
Trei căi de redare
Animated alege o cale per proprietate. API-ul nu se schimbă în funcție de cale.
| Cale | Când | Muncă per cadru |
|---|---|---|
| browser | Mișcare finită de transform și opacity pe elemente Animated.<tag>, inclusiv arcuri | Nimic în JavaScript-ul paginii |
| css | Curbe exacte pe care browserul le poate exprima cu keyframe-uri CSS comune | Nimic în JavaScript-ul paginii |
| js | Variabile de stil obișnuite, intrare, calcul propriu și limitele secvențelor | O scriere per valoare, fără randare React |
O valoare, multe elemente
Derivatele unei valori de hook sunt expresii calc(). Cu scope, o singură scriere de variabilă per cadru conduce fiecare element din container.
Se pregătește exemplul…
Verificați calea
inspect(element) returnează driverul și motivul căii de rezervă pentru fiecare proprietate animată în timpul unei rulări reale.
import { inspect } from '@kkwaenggwari/animated';
console.table(inspect(element));
// property driver reason
// transform browser null
// opacity css null
// --level js css-variable-requires-jsPornește de la primul cadru
Când sarcina care pornește o mișcare ține ocupat firul principal, cum ar fi hidratarea sau un commit mare, mișcarea repornește după ce se încheie acea muncă, în loc să pară deja avansată. O pornire pe o pagină ascunsă se încheie în fundal.
Cum au fost măsurate cifrele de pe pagina principală
Fiecare scenariu a rulat pe o pagină nouă după o încălzire, cu trei eșantioane înregistrate, raportând mediana. Timpul JavaScript este timpul petrecut în callback-urile animation-frame cât rulează mișcarea. Nu include stilul, layoutul și desenarea, pe care browserul le face pentru orice abordare, deci nu este o măsură a CPU total sau a ratei de cadre.
Redarea în browser nu face gratuite layoutul, desenarea, compunerea sau memoria. Măsurați ecranul real pe dispozitivele pe care le suportați.
| Scenariu | Configurare | Rezultat |
|---|---|---|
| 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