Guider · 02
Web og React Native
Én import for begge plattformene. Metro velger native-implementasjonen, og nettbundlere velger DOM-versjonen.
Samme import
Installer én pakke og importer fra roten på begge plattformene. React er den eneste påkrevde peer-en; React Native er en valgfri peer for native-apper. Ingen av plattformene trenger provider, omslag eller oppsettkall.
// 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} />
</>
);
}Slik spilles bevegelse av
På nettet spilles komponentene av med Web Animations API og analytisk samplede fjærer, så det finnes ikke noe animasjonsbibliotek å laste inn og ingen React-rendering per bilde. I React Native bruker komponentene Animated med native driver for transforms og opacity, og JS-driver bare der layouten (bredde eller høyde) endres.
| Del | Web | React Native |
|---|---|---|
| Transforms og opacity | Web Animations API | Animated, native driver |
| Bredde og høyde | Web Animations API | Animated, JS-driver |
| Strømmet tekst | Tegn som tones inn, noen få React-renderinger i sekundet | En ekte Text, uten toning |
| Sheets og zoom | Native dialog i det øverste laget | Gjennomsiktig Modal |
| Bakgrunn | I en skjult fane vises strømmet tekst med en gang | Bevegelsen lander i sluttilstanden |
Spesielt for React Native
API-et er det samme; dette er forskjellene du merker på en enhet.
- Tall og strømmet tekst forblir en ekte
Text, så merking, linjebryting,numberOfLinesog tilgjengelighet fungerer som vanlig. MotionSheetogMotionZoomrenderes i en gjennomsiktigModal, og tilbakeknappen lukker dem.- Indre
ScrollView-er i en sheet beholder egne bevegelser; sheeten dras i håndtaket og faste områder. MotionHoldbekrefter direkte fra tilgjengelighetshandlingen aktiver.- Inline-
MotionSwapmåler nytt innhold på én linje; brukinline=—for innhold som brytes.
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>
);
}Layouten din forblir din
Komponentene beholder plattformens egen layout: tekstmål, linjebryting, skalering av skrift, forelderens begrensninger og stilene dine. Bevegelsen tvinger aldri en tegnbredde, en fast teksthøyde eller en klippemaske på teksten din.
Hva som er verifisert, og hvor
Oppførselen på nettet er verifisert i ekte nettlesere. Oppførselen i React Native dekkes av tester av de delte modellene og en simulert renderer, så sjekk bevegelser og layout på målenhetene dine før en utgivelse.