Kılavuzlar · 02
Web ve React Native
İki platform için tek import. Metro native uygulamayı, web paketleyicileri ise DOM olanı seçer.
Aynı import
Tek bir paket kurun ve iki platformda da kökünden import edin. Zorunlu tek peer React'tir; React Native, native uygulamalar için isteğe bağlı bir peer'dır. Hiçbir platform provider, sarmalayıcı ya da kurulum çağrısı gerektirmez.
// 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} />
</>
);
}Hareket nasıl oynatılır
Web'de bileşenler, yayları analitik örneklenen Web Animations API üzerinde oynatılır; yüklenecek animasyon kütüphanesi ve kare başına React render'ı yoktur. React Native'de bileşenler transform'lar ve opaklık için native driver ile Animated kullanır, JS driver'ı ise yalnızca düzenin (genişlik ya da yükseklik) değiştiği yerde.
| Kısım | Web | React Native |
|---|---|---|
| Transform'lar ve opaklık | Web Animations API | Animated, native driver |
| Genişlik ve yükseklik | Web Animations API | Animated, JS driver |
| Akan metin | Belirerek gelen karakterler, saniyede birkaç React render'ı | Gerçek bir Text, solma yok |
| Sheet'ler ve yakınlaştırma | Üst katmanda native dialog | Şeffaf Modal |
| Arka plan | Gizli sekmede akan metin bir anda görünür | Hareket bitiş durumuna yerleşir |
React Native'e özgü noktalar
API aynıdır; bunlar cihazda fark edeceğiniz farklardır.
- Sayılar ve akan metin gerçek bir
Textolarak kalır; seçim, satır kaydırma,numberOfLinesve erişilebilirlik her zamanki gibi davranır. MotionSheetveMotionZoomşeffaf birModaliçinde render edilir ve geri düğmesi onları kapatır.- Bir sheet içindeki
ScrollView'lar kendi hareketlerini korur; sheet tutamacından ve sabit alanlarından sürüklenir. MotionHolddoğrudan erişilebilirlik etkinleştirme eyleminden onaylar.- Satır içi
MotionSwapyeni içeriği tek satırda ölçer; kayan içerik içininline=—kullanın.
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>
);
}Düzeniniz size ait kalır
Bileşenler platformun kendi düzenini korur: metin ölçüleri, satır kaydırma, yazı tipi ölçekleme, üst öğe kısıtları ve stilleriniz. Hareket metninize asla karakter genişliği, sabit metin yüksekliği ya da kırpma maskesi dayatmaz.
Neyin nerede doğrulandığı
Web davranışı gerçek tarayıcılarda doğrulanır. React Native davranışı paylaşılan modellerin ve taklit bir render edicinin testleriyle kapsanır; yayın öncesinde hareketleri ve düzeni hedef cihazlarınızda kontrol edin.