Mișcare pentru React DOM · API-ul Animated din React Native
Scrieți mișcarea o dată. Rulează fluid și nu se strică niciodată.
Animated aduce Animated din React Native pe web. O singură valoare conduce oricâte elemente fără randare React la fiecare cadru, mișcarea suportată o redă chiar browserul, iar fiecare întrerupere continuă de la ce e pe ecran.
npm install @kkwaenggwari/animatedO singură valoare de ceas conduce valurile tuturor celor 64 de forme. Mișcați cursorul peste scenă.
Măsurat pe această versiune
Măsurat cu build-ul 1.0.0 în Chrome headless pe un PC desktop. Cifrele depind de dispozitiv. Cum am măsurat
- 0.00msJavaScript per cadru cât se mișcă 400 de elemente
Mișcarea finită de transform și opacity pe elementele Animated o redă browserul. Callback-urile de cadru ale paginii nu fac nicio muncă.
- 0.13msJavaScript per cadru când o valoare conduce 10.000 de elemente
Valoarea scrie o singură variabilă CSS; fiecare element își derivă stilul din ea în CSS.
- 0Randări React în timpul mișcării
Valorile nu trec niciodată prin starea React. Componentele se randează când se schimbă props, nu când se schimbă cadrul.
01 · Simplu
API-ul pe care îl știți deja, pe style React obișnuit
timing, spring, interpolate, loop și Animated.event își păstrează numele și configurațiile din React Native. Valoarea intră direct în prop-ul obișnuit style, așa că nu trebuie învățată nicio componentă specială înainte de prima mișcare.
- Aduceți codul din React Native redenumind
Animated.ViewînAnimated.div. - O singură valoare poate mișca simultan o bandă, un cadran și un rând de carduri, fiecare cu propriul interval.
useAnimateddeține rețeta: pornește la montare, repornește când se schimbă o dependență și face curat la demontare.
Se pregătește exemplul…
Aceleași apeluri ca în React Native
// React Native
<Animated.View style={{ transform: [{ rotate }] }} />
// React DOM with @kkwaenggwari/animated — the rest is identical
<Animated.div style={{ transform: [{ rotate }] }} />
const spin = useAnimatedValue(0);
const rotate = spin.interpolate({ inputRange: [0, 1], outputRange: ['0deg', '360deg'] });
Animated.loop(
Animated.timing(spin, { toValue: 1, duration: 900, easing: Easing.linear, useNativeDriver: true }),
).start();02 · Rapid
Fără randare React la fiecare cadru
Valoarea unui hook este o variabilă CSS. Interpolările liniare și aritmetica devin expresii calc() exacte ale acelei variabile, așa că fiecare cadru înseamnă o singură scriere, iar restul îl calculează browserul. Mișcarea finită de transform și opacity pe elementele Animated.<tag> o redă browserul fără callback-uri de cadru.
- Schimbați numărul de puncte: contorul arată că React a randat o dată per schimbare, niciodată per cadru.
scopescrie valoarea o dată pe container în loc de pe fiecare element.inspect(element)spune ce cale folosește fiecare proprietate și de ce.
Se pregătește exemplul…
03 · Stabil
Întrerupeți-l oriunde. Continuă.
O țintă nouă pornește de unde e elementul pe ecran, iar arcul păstrează și viteza, așa că o întoarcere la jumătatea drumului se curbează lin în loc să se oprească întâi. Controlerele declarate într-un hook se opresc și se eliberează la înlocuire și la demontare, iar markup-ul randat pe server continuă să se animeze după hidratare.
- Dați clic de două ori repede: cu
springtraiectoria se curbează, cutimingpoziția se păstrează, dar pornește o curbă nouă. - Oprirea lasă valoarea unde este; nimic nu sare la starea finală.
- Nicio buclă de cadre uitată după demontare, schimbarea rutei sau o filă ascunsă.
Se pregătește exemplul…
- Dock magneticPictogramele cresc când trece cursorul, își împing vecinii și se liniștesc când pleacă.
moveInputfollowuseAnimatedCSSmultiply - Pachet de carduriTrageți cardul de deasupra. Peste prag zboară; altfel revine cu arc.
dragInputuseAnimatedListenerAnimated.div - Galerie partajatăO dală crește într-o vedere de detaliu și se micșorează înapoi în grilă.
Animated.SceneAnimated.Keepmove
Construit cu Animated
Aveți nevoie de o componentă gata făcută? Animated Chorus.
Numere care se rotesc, evidențieri de carduri care se mută, progres, sheet-uri și liste animate care intră direct în React și React Native. Aceste trei rulează chiar acum pe pagină.
Vizitați Animated ChorusÎncepeți în trei minute
Instalați pachetul, mișcați o primă valoare, apoi alegeți un ghid pentru sarcina de care aveți nevoie.
npm install @kkwaenggwari/animated