Text: mi ez, szöveg megjelenítése és React Native

Szerző: IT Sectr Megjelenés: 2026-07-05 Olvasási idő: 9 perc

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

  • Text az egyetlen React Native komponens szöveg megjelenítésére
  • Támogatja a beágyazást a szöveg egyes részeinek stílusozásához
  • A Text stílusokat örököl a szülő Text komponensektől
  • UILabel-be renderel iOS-en és TextView-be Androidon
  • Támogatja a numberOfLines és adjustsFontSizeToFit funkciókat a megjelenítés kezeléséhez

Mi az a Text a React Native-ben

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 tulajdonságai és API

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).

Szöveg megjelenítési props-ok

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.

Interaktív props-ok

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.

Platform specifikus props-ok

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).

Különbségek a Text és a HTML p és span elemek között

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ásText a Text-ben — stílusöröklésp nem tartalmazhat p-t; span p-n belül
Alapértelmezett marginNincs alapértelmezett margóp-nek van margin-block-start/end
SortörésAutomatikus a konténeren belülp — blokk, span — soron belüli
onPress támogatásBeépített támogatásTovábbi burkolót igényel
StílusöröklésIgen, a szülő Text-tőlIgen, 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.

Szöveg stílusozása és betűtípusok

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 csatlakoztatása

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.

Stílusöröklés és kaszkád

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.

js
<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.

Gyakorlati példák a Text használatával

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.

1. példa: hírkártya formázá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.

js
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.

2. példa: szöveg sor korlátozással

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.

js
<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

Miért nincsenek h1, p, span tagek a React Native-ben?

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.

Használható a Text gombként?

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.

Miért nem tördelődik a szövegem?

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.

Hogyan készítek félkövér szöveget a Text-en belül?

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.

Tartalmazhat a Text képet?

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

  • Text — az egyetlen React Native komponens szöveg megjelenítésére, helyettesíti a web p, span, h1-h6 elemeit
  • Támogatja a beágyazást stílusörökléssel a szülő Text komponenstől
  • Fő props-ok: numberOfLines, ellipsizeMode, onPress, selectable, adjustsFontSizeToFit
  • A Text natív UILabel-be (iOS) vagy TextView-be (Android) renderel
  • A betűtípusok platform szinten csatlakoznak a fontFamily segítségével a StyleSheet-ben
  • A Text stílusai nem öröklődnek View-tól — explicit beállítás vagy defaultProps szükséges
  • Kattintható linkekhez használjon beágyazott Text-et onPress-szel, ne TouchableOpacity-t

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.

Projekt megbeszélése

Olvassa el is