A Text komponens a React Native-ben az egyetlen mód a szöveg képernyőn való megjelenítésére, ellentétben a webbel, ahol különböző tageket (p, span, h1-h6) használnak. A Text támogatja a beágyazást a stílusok kaszkádolt örökléséhez, az érintési események kezelését és a sorok automatikus tördelését. A React Native Docs, 2024 szerint a Text a második leggyakrabban használt komponens a View után. A komponens natív UILabel-be renderel iOS-en és TextView-be Androidon, biztosítva a betűtípusok és akadálymentesítés megfelelő működését.
Főbb pontok
A Text egy React Native komponens szöveges tartalom megjelenítésére. Ellentétben a webfejlesztéssel, ahol számos szemantikus tag létezik a szöveg számára, a React Native-ben minden szöveges elem a Text segítségével jön létre. A komponens képes megjeleníteni egyszerű szöveget és összetett struktúrákat beágyazott Text és stílusozott részekkel.
A Text automatikusan kezeli a sortördelést, vezérli a betűcsaládot, méretet, színt és igazítást. A komponens támogatja az érintési eseményeket (onPress), lehetővé téve kattintható linkek létrehozását további burkolók nélkül. Fontos korlátozás: a Text nem helyezhető el közvetlenül View-ban — csak más Text komponensekben vagy közvetlen tartalomként.
A React Native Nested Text, 2024 szerint a beágyazott Text komponensek öröklik a stílusokat a szülőtől. Ez lehetővé teszi egy alapstílus beállítását a felső szinten és egyedi tulajdonságok felülírását adott részekhez — hasonlóan a span CSS-sel való működéséhez a weben.
A Text komponens props-ok sorát kínálja a megjelenítés, viselkedés és akadálymentesítés kezeléséhez. Fő kategóriák: stílus props-ok (betűtípus, méret, szín, igazítás), megjelenítési props-ok (numberOfLines, lineBreakMode) és interaktív props-ok (onPress, onLongPress).
A numberOfLines korlátozza a megjelenített sorok számát, három pontot hozzáadva a végéhez. Az ellipsizeMode vezérli a három pont pozícióját (head, middle, tail, clip). Az adjustsFontSizeToFit automatikusan csökkenti a betűméretet, hogy a szöveg beleférjen a megadott keretbe. A lineBreakMode határozza meg, hogyan vágódik le a szöveg a numberOfLines-en túl.
A Text támogatja az onPress és onLongPress eseményeket az érintések kezeléséhez. Ez lehetővé teszi szöveges linkek létrehozását TouchableOpacity használata nélkül. Az onTextLayout információt ad vissza a szöveg elhelyezkedéséről renderelés után — hasznos animációkhoz és pozicionáláshoz.
iOS-en elérhető a disabled (szöveg letiltása), selectable (kijelölés engedélyezése), dataDetectorTypes (linkek, telefonszámok, címek automatikus felismerése). Androidon elérhető a selectable (textSelectable segítségével), includeFontPadding (felesleges térközök eltávolítása).
Bár a Text vizuálisan hasonlít a HTML p és span tagekhez, az építészeti különbségek jelentősek. A React Native-ben hiányzik a DOM-modell szemantikus szöveges elemekkel — minden szöveges csomópont egyetlen Text komponensen keresztül kezelődik különböző props-okkal.
| Jellemző | Text (React Native) | p / span (HTML) |
|---|---|---|
| Beágyazás | Text a Text-ben — stílusöröklés | p nem tartalmazhat p-t; span p-n belül |
| Alapértelmezett margin | Nincs alapértelmezett margó | p-nek van margin-block-start/end |
| Sortörés | Automatikus a konténeren belül | p — blokk, span — soron belüli |
| onPress támogatás | Beépített támogatás | További burkolót igényel |
| Stílusöröklés | Igen, a szülő Text-től | Igen, CSS kaszkád |
A kulcs különbség — a stílusöröklés a Text beágyazásán keresztül. Ha a külső Text fontSize: 18 és color: blue értékkel rendelkezik, az összes beágyazott Text örökli ezeket a stílusokat. Bármely prop felülírható a belső Text-ben egy adott érték megadásával. Ez kódot takarít meg és tisztább szerkezetet eredményez.
A Text a legtöbb CSS-tulajdonságot támogatja a tipográfiához: fontFamily, fontSize, fontWeight, fontStyle, color, letterSpacing, lineHeight, textAlign, textDecorationLine, textTransform. A React Native-ben a betűtípusok platform szinten csatlakoznak, nem @font-face segítségével.
Egyedi betűtípusok használatához hozzá kell adni őket az assets/fonts mappához és meg kell adni a react-native.config.js-ben. Az alkalmazás újraépítése után a betűtípus elérhetővé válik a fontFamily-n keresztül. A React Native nem támogatja közvetlenül a webes betűtípusokat (Google Fonts) — .ttf vagy .otf fájlok letöltése szükséges.
Az öröklési mechanizmus a Text-ben eltér a CSS-től. Stílusok csak Text-től beágyazott Text-ig terjednek, de View-tól Text-ig nem. Ha az egész alkalmazáshoz be kell állítani egy betűtípust, a Text komponens defaultProps-ját vagy egy egyedi burkoló komponenst kell használni.
<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>
Ebben a példában a külső Text beállítja a fontSize: 18 és color: #333 értékeket. A belső Text örökli a fontSize-t (18), de felülírja a fontWeight-ot bold-ra és a color-t #007AFF-re. A külső Text csak a saját stílusait örökli. Ez pontos analógiája a beágyazott span működésének HTML-ben.
Vizsgáljunk meg két tipikus forgatókönyvet a Text használatára React Native-ben: szöveg formázása beágyazással és kattintható komponens létrehozása sor korlátozással.
Ebben a példában a Text többsoros szöveg megjelenítésére szolgál kiemelt elemekkel: cím, dátum és tartalom linkkel.
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>
);
Ebben a szerkezetben három független Text komponens van (cím, dátum, tartalom), mindegyik saját stílussal. A tartalmat tartalmazó Text-en belül van egy másik Text onPress-szel a linkhez. Ez a minta hírfolyamokhoz, blogokhoz és hozzászólásokhoz használatos.
Szöveg előnézetének megjelenítéséhez három ponttal a numberOfLines használatos. Ez egy szabványos minta termékkártyákhoz és listákban szereplő cikkekhez.
<Text
numberOfLines={2}
ellipsizeMode="tail"
style={styles.preview}
>
{longDescription}
</Text>
A numberOfLines = 2 tulajdonság két sorra korlátozza a szöveget. Ha a szöveg hosszabb, a React Native automatikusan három pontot ad a második sor végéhez. Az ellipsizeMode: 'tail' paraméter azt jelzi, hogy a három pont a végén legyen (head, middle, clip is elérhető).
Gyakran ismételt kérdések
A React Native minimalista komponenskészletet használ a cross-platform kompatibilitás érdekében. Több szemantikus HTML tag helyett egyetlen Text kerül alkalmazásra különböző stílusokkal. Ez leegyszerűsíti a renderelést mindkét platformon egyetlen kódbázisból.
Igen, a Text támogatja az onPress és onLongPress eseményeket az érintések kezeléséhez. Azonban a vizuális visszajelzéssel rendelkező gombokhoz (nyomás kiemelése) jobb a TouchableOpacity vagy Pressable használata Text-tel a belsejében. A Text.onPress alapértelmezetten nem biztosít vizuális nyomásjelzést.
A Text automatikusan csak hosszú sorokat tördel a konténerén belül. Ha a szöveg nem tördelődik, ellenőrizze: van-e szélességkorlátozása a szülő View-nak, nincs-e nowrap beállítva a stílusokban, és nem haladja-e meg a numberOfLines a rendelkezésre álló sorok számát.
Használjon beágyazott Text-et fontWeight: 'bold' értékkel, vagy csomagolja a szöveget egy komponensbe ezzel a stílussal. Alkalmazható a fontWeight: '700' vagy '800' is vastagabb megjelenéshez. A vastagság a megfelelő betűcsalád elérhetőségétől függ az eszközön.
Nem, a Text csak más Text komponenseket vagy sztringeket tartalmazhat. Az Image nem lehet a Text leszármazottja. Ikonokkal ellátott szöveg megjelenítéséhez használjon View-t Text és Image szomszédos elemekként vagy egy olyan komponenst, amely támogatja a képek beágyazását.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is