React Native-dagi Text komponenti ekranda matnni ko'rsatishning yagona usulidir, vebda turli teglar (p, span, h1-h6) ishlatilishidan farqli o'laroq. Text uslublarning kaskadli meros olishi uchun ichma-ich joylashtirishni, teginish hodisalarini qayta ishlashni va satrlarni avtomatik qaytarishni qo'llab-quvvatlaydi. React Native Docs, 2024 ma'lumotlariga ko'ra, Text View'dan keyin ikkinchi eng ko'p ishlatiladigan komponentdir. Komponent iOS-da UILabel va Android-da TextView'ga renderlanadi, shriftlar va foydalanish imkoniyatining to'g'ri ishlashini ta'minlaydi.
Asosiy nuqtalar
Text matn mazmunini ko'rsatish uchun React Native komponentidir. Veb-ishlanmasidan farqli o'laroq, matn uchun ko'plab semantik teglar mavjud bo'lgan joyda, React Native-da barcha matn elementlari Text orqali yaratiladi. Komponent oddiy matnni ham, ichma-ich Text va uslublangan qismlar bilan murakkab tuzilmalarni ham ko'rsatishi mumkin.
Text avtomatik satr qaytarishni boshqaradi, shrift turini, o'lchamini, rangini va tekislanishini nazorat qiladi. Komponent teginish hodisalarini (onPress) qo'llab-quvvatlaydi, bu qo'shimcha o'rovchilarsiz bosiladigan havolalar yaratishga imkon beradi. Muhim cheklash: Text-ni to'g'ridan-to'g'ri View-ga joylashtirib bo'lmaydi — faqat boshqa Text komponentlariga yoki to'g'ridan-to'g'ri mazmun sifatida.
React Native Nested Text, 2024 ga ko'ra, ichma-ich Text komponentlari uslublarni ota-onadan meros oladi. Bu yuqori darajada asosiy uslubni o'rnatish va alohida qismlar uchun ma'lum xususiyatlarni qayta belgilash imkonini beradi — vebda CSS bilan span ishlashiga o'xshab.
Text komponenti ko'rsatish, xatti-harakat va foydalanish imkoniyatini boshqarish uchun bir qator xususiyatlarni taqdim etadi. Asosiy kategoriyalar: uslub xususiyatlari (shrift, o'lcham, rang, tekislash), ko'rsatish xususiyatlari (numberOfLines, lineBreakMode) va interaktiv (onPress, onLongPress).
numberOfLines ko'rsatilgan satrlar sonini cheklaydi, oxiriga uch nuqta qo'shadi. ellipsizeMode uch nuqtaning joyini boshqaradi (head, middle, tail, clip). adjustsFontSizeToFit matn berilgan ramkaga sig'ishi uchun shrift o'lchamini avtomatik kichiklashtiradi. lineBreakMode numberOfLines dan tashqari matnni qanday kesishni belgilaydi.
Text teginishlarni boshqarish uchun onPress va onLongPress qo'llab-quvvatlaydi. Bu TouchableOpacity ishlatmasdan matn havolalarini yaratishga imkon beradi. onTextLayout renderdan keyin matn joylashuvi haqida ma'lumot qaytaradi — animatsiyalar va joylashtirish uchun foydali.
iOS da disabled (matnni o'chiradi), selectable (tanlashni yoqadi), dataDetectorTypes (havolalar, telefonlar, manzillarni avtomatik tanib olish) mavjud. Android da selectable (textSelectable orqali), includeFontPadding (ortiqcha bo'shliqlarni olib tashlaydi) mavjud.
Text vizual ravishda HTML p va span teglariga o'xshasa ham, arxitektura farqlari sezilarli. React Native-da semantik matn elementlari bilan DOM modeli yo'q — barcha matn tugunlari turli xususiyatlar bilan yagona Text komponenti orqali boshqariladi.
| Xususiyat | Text (React Native) | p / span (HTML) |
|---|---|---|
| Ichma-ich joylashtirish | Text ichida Text — uslublar merosi | p p ni o'z ichiga olmaydi; span p ichida |
| Sukut bo'yicha margin | Sukut bo'yicha bo'sh joy yo'q | p da margin-block-start/end bor |
| Satr qaytarish | Konterner ichida avtomatik | p — blok, span — qator |
| onPress qo'llab-quvvatlash | Ichki qo'llab-quvvatlash | Qo'shimcha o'rovchi talab qiladi |
| Uslublar merosi | Ha, ota-ona Text dan | Ha, CSS kaskadi |
Asosiy farq — Text ichma-ich joylashtirish orqali uslublar merosi. Agar tashqi Text fontSize: 18 va color: blue bo'lsa, barcha ichma-ich Text'lar bu uslublarni meros oladi. Ichki Text'da istalgan xususiyatni aniq qiymat berib o'zgartirish mumkin. Bu kodni tejaydi va tuzilmani toza qiladi.
Text tipografiya uchun CSS xususiyatlarining aksariyatini qo'llab-quvvatlaydi: fontFamily, fontSize, fontWeight, fontStyle, color, letterSpacing, lineHeight, textAlign, textDecorationLine, textTransform. React Native-da shriftlar @font-face orqali emas, platforma darajasida ulanadi.
Maxsus shriftlardan foydalanish uchun ularni assets/fonts papkasiga qo'shish va react-native.config.js da ko'rsatish kerak. Ilova qayta qurilgandan so'ng, shrift fontFamily orqali mavjud bo'ladi. React Native veb-shriftlarni (Google Fonts) to'g'ridan-to'g'ri qo'llab-quvvatlamaydi — .ttf yoki .otf fayllarini yuklab olish talab qilinadi.
Text dagi meros mexanizmi CSS dan farq qiladi. Uslublar faqat Text dan ichma-ich Text ga o'tadi, View dan Text ga o'tmaydi. Agar butun ilova uchun shrift o'rnatish kerak bo'lsa, Text komponentining defaultProps dan yoki maxsus o'rovchi komponentdan foydalaniladi.
<Text style={{ fontSize: 18, color: '#333' }}>
This text is 18px and color #333
<Text style={{ fontWeight: 'bold', color: '#007AFF' }}>
bold and blue
</Text>
back to #333 color
</Text>
Bu misolda tashqi Text fontSize: 18 va color: #333 o'rnatadi. Ichki Text fontSize (18) meros oladi, lekin fontWeight ni bold ga va color ni #007AFF ga o'zgartiradi. Tashqi Text faqat o'z uslublarini meros oladi. Bu HTML dagi ichma-ich span ishlashining aniq analogiyasidir.
React Native da Text dan foydalanishning ikkita odatiy ssenariysini ko'rib chiqamiz: ichma-ich joylashtirish bilan matn formatlash va satr cheklovi bilan bosiladigan komponent yaratish.
Bu misolda Text ajratilgan elementlar bilan ko'p satrli matn ko'rsatish uchun ishlatiladi: sarlavha, sana va havola bilan mazmun.
const NewsCard = ({ title, date, content }) => (
<View style={styles.card}>
<Text style={styles.title}>{title}</Text>
<Text style={styles.date}>{date}</Text>
<Text style={styles.content}>
{content}
{' ' }
<Text
style={styles.link}
onPress={() => Linking.openURL(url)}
>
Read more
</Text>
</Text>
</View>
);
Bu tuzilmada har biri o'z uslubiga ega uchta mustaqil Text komponenti (sarlavha, sana, mazmun) mavjud. Mazmunli Text ichida havola uchun onPress bilan yana bir Text joylashtirilgan. Bunday naqsh yangilik lentalari, bloglar va sharhlarda ishlatiladi.
Uch nuqta bilan matn oldindan ko'rishni ko'rsatish uchun numberOfLines ishlatiladi. Bu ro'yxatlardagi mahsulot kartalari va maqolalar uchun standart naqshdir.
<Text
numberOfLines={2}
ellipsizeMode="tail"
style={styles.preview}
>
{longDescription}
</Text>
numberOfLines = 2 xususiyati matnni ikki satr bilan cheklaydi. Agar matn uzunroq bo'lsa, React Native avtomatik ikkinchi satr oxiriga uch nuqta qo'shadi. ellipsizeMode: 'tail' parametri uch nuqta oxirida bo'lishini ko'rsatadi (head, middle, clip ham mavjud).
Tez-tez so'raladigan savollar
React Native platformalararo moslik uchun minimalistik komponentlar to'plami dan foydalanadi. Ko'plab semantik HTML teglari o'rniga turli uslublar bilan bitta Text qo'llaniladi. Bu bir kod bazasidan ikkala platformada renderlashni soddalashtiradi.
Ha, Text teginishlarni boshqarish uchun onPress va onLongPress qo'llab-quvvatlaydi. Biroq, vizual teskari aloqali tugmalar (bosishni yoritish) uchun ichida Text bilan TouchableOpacity yoki Pressable ishlatish yaxshiroq. Text.onPress sukut bo'yicha vizual bosish ko'rsatkichini ta'minlamaydi.
Text avtomatik faqat konteyner ichidagi uzun satrlarni qaytaradi. Agar matn qaytarilmasa, tekshiring: ota-ona View ning kenglik cheklovi bormi, uslublarda nowrap o'rnatilmaganmi va numberOfLines mavjud satr sonidan oshmayaptimi.
fontWeight: 'bold' bilan ichma-ich Text ishlating yoki matnni bu uslub bilan komponentga o'rang. Shuningdek, fontWeight: '700' yoki '800' qalinroq yozuv uchun qo'llanilishi mumkin. Qalinlik qurilmada tegishli shriftning mavjudligiga bog'liq.
Yo'q, Text faqat boshqa Text komponentlari yoki satrlarni o'z ichiga oladi. Image Text ning avlodi bo'la olmaydi. Belgi bilan matnni ko'rsatish uchun Text va Image ni qo'shni elementlar sifatida View ishlating yoki rasmlarni joylashtirishni qo'llab-quvvatlovchi komponentdan foydalaning.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.