Guider · 02
Webb och React Native
En import för båda plattformarna. Metro väljer native-implementationen och webbbundlers väljer DOM-varianten.
Samma import
Installera ett paket och importera från dess rot på båda plattformarna. React är enda obligatoriska peer; React Native är en valfri peer för native-appar. Ingen av plattformarna behöver provider, omslag eller setup-anrop.
// Web and React Native: the same import.
import { MotionNumber, MotionList } from '@kkwaenggwari/animated-chorus';
export function Score({ points, players }) {
return (
<>
<MotionNumber value={points} />
<MotionList items={players} renderItem={(player) => player.name} />
</>
);
}Så spelas rörelse upp
På webben spelas komponenterna upp med Web Animations API och analytiskt samplade fjädrar, så det finns inget animationsbibliotek att läsa in och ingen React-rendering per bildruta. I React Native använder komponenterna Animated med native driver för transforms och opacity, och JS-driver bara där layouten (bredd eller höjd) ändras.
| Del | Webb | React Native |
|---|---|---|
| Transforms och opacity | Web Animations API | Animated, native driver |
| Bredd och höjd | Web Animations API | Animated, JS-driver |
| Strömmad text | Intonade tecken, några React-renderingar per sekund | En riktig Text, utan toning |
| Sheets och zoom | Native dialog i det översta lagret | Genomskinlig Modal |
| Bakgrund | I en dold flik visas strömmad text på en gång | Rörelsen landar direkt i sitt sluttillstånd |
Specifikt för React Native
API:t är detsamma; det här är skillnaderna du märker på en enhet.
- Siffror och strömmad text förblir en riktig
Text, så markering, radbrytning,numberOfLinesoch tillgänglighet fungerar som vanligt. MotionSheetochMotionZoomrenderas i en genomskinligModal, och bakåtknappen stänger dem.- Inre
ScrollViews i en sheet behåller sina egna gester; sheeten dras i sitt handtag och fasta ytor. MotionHoldbekräftar direkt från tillgänglighetsåtgärden aktivera.- Inline-
MotionSwapmäter nytt innehåll på en rad; användinline=—för innehåll som radbryts.
import { Text, View } from 'react-native';
import { MotionNumber, MotionSheet } from '@kkwaenggwari/animated-chorus';
export function Wallet({ balance, open, setOpen }) {
return (
<View>
<MotionNumber
value={balance}
intl
locale="en-US"
format={{ style: 'currency', currency: 'USD' }}
/>
<MotionSheet open={open} onOpenChange={setOpen} detents={[0.5, 0.9]}>
<Text>Recent activity</Text>
</MotionSheet>
</View>
);
}Din layout förblir din
Komponenterna behåller plattformens egen layout: textmått, radbrytning, typsnittsskalning, förälderns begränsningar och dina stilar. Rörelsen tvingar aldrig på din text en teckenbredd, en fast texthöjd eller en klippmask.
Vad som är verifierat och var
Beteendet på webben är verifierat i riktiga webbläsare. Beteendet i React Native täcks av tester av de delade modellerna och en simulerad renderare, så kontrollera gester och layout på dina målenheter före en release.