Vodniki · 02
Splet in React Native
En uvoz za obe platformi. Metro izbere domorodno izvedbo, spletni bundlerji pa izvedbo DOM.
Isti uvoz
Namestite en paket in na obeh platformah uvažajte iz njegovega korena. React je edina obvezna peer odvisnost; React Native je neobvezna peer odvisnost za domorodne aplikacije. Nobena platforma ne potrebuje providerja, ovoja ali klica za nastavitev.
// 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} />
</>
);
}Kako se gibanje predvaja
Na spletu komponente tečejo na Web Animations API z analitično vzorčenimi vzmetmi, zato ni treba naložiti nobene knjižnice za animacije in ni upodabljanja Reacta na sličico. V React Nativu komponente uporabljajo Animated z domorodnim driverjem za transformacije in prosojnost, driver JS pa le tam, kjer se spremeni postavitev (širina ali višina).
| Del | Splet | React Native |
|---|---|---|
| Transformacije in prosojnost | Web Animations API | Animated, domorodni driver |
| Širina in višina | Web Animations API | Animated, driver JS |
| Pretočno besedilo | Postopno prikazani znaki, nekaj upodobitev Reacta na sekundo | Pravi Text, brez postopnega prikaza |
| Sheeti in povečava | Domoroden dialog v zgornji plasti | Prozoren Modal |
| Ozadje | V skritem zavihku se pretočno besedilo pokaže naenkrat | Gibanje se umiri v končno stanje |
Posebnosti React Nativa
API je enak; to so razlike, ki jih boste opazili na napravi.
- Števila in pretočno besedilo ostanejo pravi
Text, zato označevanje, prelamljanje,numberOfLinesin dostopnost delujejo kot običajno. MotionSheetinMotionZoomse upodobita v prozornemModal, zapre pa ju gumb za nazaj.- Notranji
ScrollViewv sheetu ohranijo svoje geste; sheet se vleče za ročaj in statična območja. MotionHoldpotrdi neposredno z dejanjem aktivacije dostopnosti.- Vrstični
MotionSwapizmeri novo vsebino v eni vrstici; za vsebino, ki se prelamlja, uporabiteinline=—.
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>
);
}Vaša postavitev ostane vaša
Komponente ohranijo postavitev platforme: mere besedila, prelamljanje, povečavo pisave, omejitve starša in vaše sloge. Gibanje vašemu besedilu nikoli ne vsili širine znaka, fiksne višine besedila ali maske obrezovanja.
Kaj je preverjeno kje
Vedenje na spletu je preverjeno v pravih brskalnikih. Vedenje v React Nativu pokrivajo testi skupnih modelov in posnemanega upodabljalnika, zato pred izdajo preverite geste in postavitev na ciljnih napravah.