Text: шта је то, приказ текста и React Native

Аутор: IT Sectr Објављено: 2026-07-05 Време читања: 9 мин

Компонента Text у React Native је једини начин за приказ текста на екрану, за разлику од веба, где се користе различити тагови (p, span, h1-h6). Text подржава угњежђавање за каскадно насљеђивање стилова, обраду догађаја додира и аутоматски прелом редова. Према React Native Docs, 2024, Text је друга најчешће коришћена компонента након View. Компонента се рендерује у изворни UILabel на iOS и TextView на Android-у, обезбјеђујући исправан рад фонтова и приступачности.

Главне тачке

  • Text је једина React Native компонента за приказ текста
  • Подржава угњежђавање за стилизовање појединачних дијелова текста
  • Text насљеђује стилове од родитељских Text компоненти
  • Рендерује се у UILabel на iOS и TextView на Android-у
  • Подржава numberOfLines и adjustsFontSizeToFit за управљање приказом

Шта је Text у React Native

Text је React Native компонента за приказ текстуалног садржаја. За разлику од веб развоја, гдје постоји мноштво семантичких тагова за текст, у React Native-у се сви текстуални елементи креирају путем Text-а. Компонента може приказати како обичан текст, тако и сложене структуре са угњежђеним Text и стилизованим фрагментима.

Text аутоматски обрађује прелом редова, управља гарнитуром, величином, бојом и поравнањем. Компонента подржава догађаје додира (onPress), што омогућава стварање кликабилних линкова без додатних омотача. Важно ограничење: Text се не може угњеждити директно у View — само у друге Text компоненте или као директан садржај.

Према React Native Nested Text, 2024, угњежђене Text компоненте насљеђују стилове од родитеља. Ово омогућава постављање основног стила на горњем нивоу и преиначавање појединачних својстава за одређене фрагменте — слично раду span-а са CSS-ом у вебу.

Својства и API компоненте Text

Компонента Text нуди скуп prop-сова за управљање приказом, понашањем и приступачношћу. Кључне категорије: стилски prop-сови (фонт, величина, боја, поравнање), prop-сови приказа (numberOfLines, lineBreakMode) и интерактивни (onPress, onLongPress).

Prop-сови за приказ текста

numberOfLines ограничава број приказаних редова, додајући три тачке на крају. ellipsizeMode управља положајем три тачке (head, middle, tail, clip). adjustsFontSizeToFit аутоматски смањује величину фонта како би текст стао у задате оквире. lineBreakMode одређује како скратити текст изван numberOfLines.

Интерактивни prop-сови

Text подржава onPress и onLongPress за обраду додира. Ово омогућава прављење текст линкова без коришћења TouchableOpacity. onTextLayout враћа информације о положају текста након рендеровања — корисно за анимације и позиционирање.

Платформски prop-сови

На iOS-у су доступни disabled (искључује текст), selectable (укључује селекцију), dataDetectorTypes (аутоматско препознавање линкова, телефона, адреса). На Android-у су доступни selectable (путем textSelectable), includeFontPadding (уклања додатне размаке).

Разлике између Text и HTML елемената p и span

Иако је Text визуелно сличан HTML таговима p и span, архитектуралне разлике су значајне. У React Native-у недостаје DOM модел са семантичким текстуалним елементима — сви текстуални чворови се обрађују кроз јединствену Text компоненту са различитим prop-совима.

КарактеристикаText (React Native)p / span (HTML)
УгњежђавањеText у Text — насљеђивање стиловаp не може садржати p; span у p
margin подразумијеваноНема размака подразумијеваноp има margin-block-start/end
Прелом редоваАутоматски унутар контејнераp — блоковни, span — линијски
Подршка за onPressУграђена подршкаЗахтијева додатни омотач
Насљеђивање стиловаДа, од родитељског Text-аДа, каскада CSS-а

Кључна разлика — насљеђивање стилова кроз угњежђавање Text-а. Ако спољашњи Text има fontSize: 18 и color: blue, сви угњежђени Text-ови насљеђују ове стилове. Било који prop се може преиначити у унутрашњем Text-у задавањем конкретне вриједности. Ово штеди код и чини структуру чистијом.

Стилизовање текста и фонтови

Text подржава већину CSS својстава за типографију: fontFamily, fontSize, fontWeight, fontStyle, color, letterSpacing, lineHeight, textAlign, textDecorationLine, textTransform. У React Native-у фонтови се повезују на нивоу платформе, а не путем @font-face.

Повезивање прилагођених фонтова

За коришћење прилагођених фонтова потребно их је додати у фасциклу assets/fonts и навести у react-native.config.js. Након поновне изградње апликације, фонт постаје доступан путем fontFamily. React Native не подржава веб-фонтове (Google Fonts) директно — потребно је преузимање .ttf или .otf датотека.

Насљеђивање и каскада стилова

Механизам насљеђивања у Text-у се разликује од CSS-а. Стилови се преносе само са Text-а на угњежђени Text, али не са View-а на Text. Ако је потребно поставити фонт за цијелу апликацију, користи се defaultProps компоненте Text или прилагођена компонента-омотач.

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>

У овом примјеру спољашњи Text поставља fontSize: 18 и color: #333. Унутрашњи Text насљеђује fontSize (18), али преиначава fontWeight на bold и color на #007AFF. Спољашњи Text насљеђује само своје стилове. Ово је тачна аналогија рада угњежђених span-ова у HTML-у.

Практични примјери са Text

Размотримо два типична сценарија коришћења Text у React Native-у: форматирање текста са угњежђавањем и стварање кликабилне компоненте са ограничењем редова.

Примјер 1: вијест картица са форматирањем

У овом примјеру Text се користи за приказ вишередног текста са истакнутим елементима: наслов, датум и садржај са линком.

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

У овој структури постоје три независне Text компоненте (наслов, датум, садржај), свака са својим стилом. Унутар Text-а са садржајем угњежђен је још један Text са onPress за линк. Овај образац се користи за вијести феедове, блогове и коментаре.

Примјер 2: текст са ограничењем редова

За приказ прегледа текста са три тачке користи се numberOfLines. Ово је стандардни образац за картице производа и чланака на листама.

js
<Text
    numberOfLines={2}
    ellipsizeMode="tail"
    style={styles.preview}
>
    {longDescription}
</Text>

Својство numberOfLines = 2 ограничава текст на два реда. Ако је текст дужи, React Native аутоматски додаје три тачке на крају другог реда. Параметар ellipsizeMode: 'tail' указује да три тачке треба да буду на крају (доступни су и head, middle, clip).

Често постављана питања

Зашто у React Native-у нема тагова h1, p, span?

React Native користи минималистички скуп компоненти за међуплатформску компатибилност. Умјесто више семантичких HTML тагова примјењује се један Text са различитим стиловима. Ово поједностављује рендеровање на обије платформе из једне базе кода.

Може ли се Text користити као дугме?

Да, Text подржава onPress и onLongPress за обраду додира. Међутим, за дугмад са визуелном повратном информацијом (освјетљење притиска) боље је користити TouchableOpacity или Pressable са Text-ом унутра. Text.onPress не пружа визуелну индикацију притиска подразумијевано.

Зашто се мој текст не прелама?

Text аутоматски прелама само дуге редове унутар свог контејнера. Ако се текст не прелама, провјерите: постоји ли ограничење ширине родитељског View-а, да ли је nowrap постављен у стиловима и да ли numberOfLines премашује доступан број редова.

Како направити подебљан текст унутар Text-а?

Користите угњежђени Text са fontWeight: 'bold' или умотајте текст у компоненту са овим стилом. Такође се може примијенити fontWeight: '700' или '800' за дебље истање. Дебљина зависи од доступности одговарајуће гарнитуре фонта на уређају.

Може ли Text садржати слику?

Не, Text може садржати само друге Text компоненте или стрингове. Image не може бити потомак Text-а. За приказ текста са иконицама користите View са Text и Image као сусједне елементе или компоненту која подржава уграђивање слика.

Закључци

  • Text — једина React Native компонента за приказ текста, замјењује p, span, h1-h6 из веба
  • Подржава угњежђавање са насљеђивањем стилова од родитељске Text компоненте
  • Кључни prop-сови: numberOfLines, ellipsizeMode, onPress, selectable, adjustsFontSizeToFit
  • Text се рендерује у изворни UILabel (iOS) или TextView (Android)
  • Фонтови се повезују на нивоу платформе путем fontFamily у StyleSheet-у
  • Стилови Text-а се не насљеђују од View-а — захтијева се изричито постављање или defaultProps
  • За кликабилне линкове користите угњежђени Text са onPress, а не TouchableOpacity

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође