Οδηγοί · 02
Web και React Native
Ένα import και για τις δύο πλατφόρμες. Το Metro επιλέγει την native υλοποίηση και οι bundlers του web την υλοποίηση DOM.
Το ίδιο import
Εγκαταστήστε ένα πακέτο και εισαγάγετε από τη ρίζα του και στις δύο πλατφόρμες. Το React είναι το μόνο υποχρεωτικό peer· το React Native είναι προαιρετικό peer για native εφαρμογές. Καμία πλατφόρμα δεν χρειάζεται provider, περιτύλιγμα ή κλήση ρύθμισης.
// 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} />
</>
);
}Πώς παίζεται η κίνηση
Στο web τα components παίζονται στο Web Animations API με ελατήρια αναλυτικής δειγματοληψίας, οπότε δεν φορτώνεται βιβλιοθήκη κίνησης και δεν υπάρχει απόδοση React ανά καρέ. Στο React Native τα components χρησιμοποιούν Animated με τον native driver για μετασχηματισμούς και αδιαφάνεια, και τον JS driver μόνο όπου αλλάζει η διάταξη (πλάτος ή ύψος).
| Μέρος | Web | React Native |
|---|---|---|
| Μετασχηματισμοί και αδιαφάνεια | Web Animations API | Animated, native driver |
| Πλάτος και ύψος | Web Animations API | Animated, JS driver |
| Κείμενο σε ροή | Χαρακτήρες που εμφανίζονται σταδιακά, λίγες αποδόσεις React το δευτερόλεπτο | Πραγματικό Text, χωρίς σβήσιμο |
| Sheets και ζουμ | Native dialog στο ανώτατο επίπεδο | Διαφανές Modal |
| Παρασκήνιο | Σε κρυφή καρτέλα, το κείμενο σε ροή εμφανίζεται μονομιάς | Η κίνηση πηγαίνει στην τελική της κατάσταση |
Ιδιαιτερότητες του React Native
Το API είναι το ίδιο· αυτές είναι οι διαφορές που θα παρατηρήσετε στη συσκευή.
- Οι αριθμοί και το κείμενο σε ροή μένουν πραγματικό
Text, οπότε η επιλογή, η αναδίπλωση, τοnumberOfLinesκαι η προσβασιμότητα συμπεριφέρονται κανονικά. - Τα
MotionSheetκαιMotionZoomαποδίδονται σε διαφανέςModalκαι το κουμπί επιστροφής τα κλείνει. - Τα εσωτερικά
ScrollViewενός sheet κρατούν τις δικές τους χειρονομίες· το sheet σύρεται από τη λαβή και τις στατικές περιοχές του. - Το
MotionHoldεπιβεβαιώνει απευθείας από την ενέργεια ενεργοποίησης προσβασιμότητας. - Το inline
MotionSwapμετρά το νέο περιεχόμενο σε μία γραμμή· χρησιμοποιήστεinline=—για περιεχόμενο που αναδιπλώνεται.
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>
);
}Η διάταξή σας μένει δική σας
Τα components κρατούν τη διάταξη της ίδιας της πλατφόρμας: μετρικές κειμένου, αναδίπλωση, κλιμάκωση γραμματοσειράς, περιορισμούς του γονέα και τα στυλ σας. Η κίνηση δεν επιβάλλει ποτέ στο κείμενό σας πλάτος χαρακτήρα, σταθερό ύψος κειμένου ή μάσκα αποκοπής.
Τι επαληθεύεται πού
Η συμπεριφορά στο web επαληθεύεται σε πραγματικά προγράμματα περιήγησης. Η συμπεριφορά στο React Native καλύπτεται από τεστ των κοινών μοντέλων και ενός προσομοιωμένου renderer, οπότε ελέγξτε χειρονομίες και διάταξη στις συσκευές-στόχους πριν από μια κυκλοφορία.