Text: o que é, exibição de texto e React Native

Autor: IT Sectr Publicado: 2026-07-05 Tempo de leitura: 9 min

O componente Text no React Native é a única maneira de exibir texto na tela, ao contrário da web, onde diferentes tags (p, span, h1-h6) são usadas. O Text suporta aninhamento para herança de estilos em cascata, manipulação de eventos de toque e quebra automática de linha. De acordo com React Native Docs, 2024, o Text é o segundo componente mais usado depois do View. O componente é renderizado como UILabel nativo no iOS e TextView no Android, garantindo a funcionalidade correta de fontes e acessibilidade.

Pontos Principais

  • Text é o único componente React Native para exibir texto
  • Suporta aninhamento para estilizar partes individuais do texto
  • Text herda estilos de componentes Text pai
  • Renderiza como UILabel no iOS e TextView no Android
  • Suporta numberOfLines e adjustsFontSizeToFit para controle de exibição

O que é Text no React Native

Text é um componente React Native para exibir conteúdo textual. Ao contrário do desenvolvimento web, onde existem muitas tags semânticas para texto, no React Native todos os elementos de texto são criados através do Text. O componente pode exibir tanto texto simples quanto estruturas complexas com Text aninhados e fragmentos estilizados.

O Text lida automaticamente com a quebra de linha, gerencia a família de fontes, tamanho, cor e alinhamento. O componente suporta eventos de toque (onPress), permitindo criar links clicáveis sem wrappers adicionais. Uma limitação importante: o Text não pode ser aninhado diretamente dentro de View — apenas dentro de outros componentes Text ou como filhos diretos.

De acordo com React Native Nested Text, 2024, componentes Text aninhados herdam estilos do pai. Isso permite definir um estilo base no nível superior e sobrescrever propriedades individuais para fragmentos específicos — semelhante a como span funciona com CSS na web.

Propriedades e API do componente Text

O componente Text fornece um conjunto de props para controlar exibição, comportamento e acessibilidade. Categorias principais: props de estilo (fonte, tamanho, cor, alinhamento), props de exibição (numberOfLines, lineBreakMode) e props interativas (onPress, onLongPress).

Props de exibição de texto

numberOfLines limita o número de linhas exibidas, adicionando reticências no final. ellipsizeMode controla a posição das reticências (head, middle, tail, clip). adjustsFontSizeToFit reduz automaticamente o tamanho da fonte para caber o texto dentro dos limites definidos. lineBreakMode determina como o texto é truncado além de numberOfLines.

Props interativas

O Text suporta onPress e onLongPress para manipular toques. Isso permite criar links de texto sem usar TouchableOpacity. onTextLayout retorna informações sobre o layout do texto após a renderização — útil para animações e posicionamento.

Props específicas de plataforma

No iOS, estão disponíveis disabled (desabilita o texto), selectable (habilita seleção) e dataDetectorTypes (detecção automática de links, telefones, endereços). No Android, estão disponíveis selectable (através de textSelectable) e includeFontPadding (remove o preenchimento extra).

Diferenças entre Text e os elementos p e span do HTML

Embora Text visualmente se assemelhe às tags HTML p e span, as diferenças arquitetônicas são significativas. O React Native não possui um modelo DOM com elementos de texto semânticos — todos os nós de texto são manipulados através de um único componente Text com várias props.

CaracterísticaText (React Native)p / span (HTML)
AninhamentoText dentro de Text — herança de estilosp não pode conter p; span dentro de p
Margem padrãoSem margens padrãop tem margin-block-start/end
Quebra de linhaAutomática dentro do contêinerp — bloco, span — em linha
Manipulação de onPressSuporte integradoRequer wrapper adicional
Herança de estilosSim, do Text paiSim, cascata CSS

A diferença chave é a herança de estilos através do aninhamento de Text. Se um Text externo tem fontSize: 18 e color: blue, todos os Text aninhados herdam esses estilos. Qualquer prop pode ser sobrescrita no Text interno definindo um valor específico. Isso economiza código e mantém a estrutura mais limpa.

Estilização de texto e fontes

O Text suporta a maioria das propriedades CSS para tipografia: fontFamily, fontSize, fontWeight, fontStyle, color, letterSpacing, lineHeight, textAlign, textDecorationLine, textTransform. No React Native, as fontes são conectadas no nível da plataforma, não através de @font-face.

Uso de fontes personalizadas

Para usar fontes personalizadas, elas devem ser adicionadas à pasta assets/fonts e especificadas no react-native.config.js. Após reconstruir a aplicação, a fonte fica disponível através de fontFamily. O React Native não suporta fontes web (Google Fonts) diretamente — é necessário baixar arquivos .ttf ou .otf.

Herança e cascata de estilos

O mecanismo de herança no Text difere do CSS. Os estilos são transmitidos apenas de Text para Text aninhado, mas não de View para Text. Para definir uma fonte para toda a aplicação, use defaultProps do componente Text ou um componente wrapper personalizado.

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>

Neste exemplo, o Text externo define fontSize: 18 e color: #333. O Text interno herda fontSize (18), mas sobrescreve fontWeight para bold e color para #007AFF. O Text externo herda apenas seus próprios estilos. Esta é uma analogia exata de como span aninhado funciona em HTML.

Exemplos práticos com Text

Vejamos dois casos de uso típicos do Text no React Native: formatação de texto com aninhamento e criação de um componente clicável com limite de linhas.

Exemplo 1: cartão de notícia com formatação

Neste exemplo, o Text é usado para exibir texto multilinha com elementos destacados: título, data e conteúdo com um link.

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

Esta estrutura tem três componentes Text independentes (título, data, conteúdo), cada um com seu próprio estilo. Dentro do Text de conteúdo, outro Text com onPress está aninhado para o link. Este padrão é usado para feeds de notícias, blogs e comentários.

Exemplo 2: texto com limite de linhas

Para exibir prévias de texto com reticências, numberOfLines é usado. Este é um padrão padrão para cartões de produtos e listas de artigos.

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

A propriedade numberOfLines = 2 limita o texto a duas linhas. Se o texto for mais longo, o React Native adiciona automaticamente reticências no final da segunda linha. O parâmetro ellipsizeMode: 'tail' especifica que as reticências devem estar no final (head, middle e clip também estão disponíveis).

Perguntas Frequentes

Por que o React Native não tem tags h1, p, span?

O React Native usa um conjunto mínimo de componentes para compatibilidade entre plataformas. Em vez de várias tags HTML semânticas, um único Text com vários estilos é usado. Isso simplifica a renderização em ambas as plataformas a partir de uma única base de código.

O Text pode ser usado como botão?

Sim, o Text suporta onPress e onLongPress para manipular toques. No entanto, para botões com feedback visual (destaque de pressão), é melhor usar TouchableOpacity ou Pressable com Text dentro. Text.onPress não fornece indicação visual de pressão por padrão.

Por que meu texto não quebra?

O Text quebra automaticamente apenas linhas longas dentro do seu contêiner. Se o texto não quebrar, verifique: se o View pai tem restrição de largura, se nowrap está definido nos estilos e se numberOfLines não excede o número de linhas disponível.

Como deixar o texto em negrito dentro do Text?

Use Text aninhado com fontWeight: 'bold' ou envolva o texto em um componente com este estilo. Você também pode usar fontWeight: '700' ou '800' para um visual mais negrito. A espessura depende da disponibilidade da família de fontes correspondente no dispositivo.

O Text pode conter uma imagem?

Não, o Text só pode conter outros componentes Text ou strings. Image não pode ser filho de Text. Para exibir texto com ícones, use View com Text e Image como elementos irmãos ou um componente com suporte para imagens inline.

Resumo

  • Text é o único componente React Native para exibir texto, substituindo p, span, h1-h6 da web
  • Suporta aninhamento com herança de estilos do componente Text pai
  • Props principais: numberOfLines, ellipsizeMode, onPress, selectable, adjustsFontSizeToFit
  • Text renderiza como UILabel nativo (iOS) ou TextView (Android)
  • Fontes são conectadas no nível da plataforma via fontFamily no StyleSheet
  • Estilos de Text não são herdados de View — é necessário atribuição explícita ou defaultProps
  • Para links clicáveis, use Text aninhado com onPress, não TouchableOpacity

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também