Komponen Text di React Native adalah satu-satunya cara untuk menampilkan teks di layar, berbeda dengan web yang menggunakan berbagai tag (p, span, h1-h6). Text mendukung nesting untuk pewarisan gaya secara kaskade, penanganan event sentuh, dan pemutusan baris otomatis. Menurut React Native Docs, 2024, Text adalah komponen kedua yang paling sering digunakan setelah View. Komponen ini me-render ke UILabel native di iOS dan TextView di Android, memastikan font dan aksesibilitas bekerja dengan benar.
Poin utama
Text adalah komponen React Native untuk menampilkan konten teks. Berbeda dengan pengembangan web, di mana ada banyak tag semantik untuk teks, di React Native semua elemen teks dibuat melalui Text. Komponen ini dapat menampilkan teks sederhana maupun struktur kompleks dengan Text bersarang dan fragmen yang diberi gaya.
Text secara otomatis menangani pemutusan baris, mengatur jenis huruf, ukuran, warna, dan perataan. Komponen ini mendukung event sentuh (onPress), memungkinkan pembuatan tautan yang dapat diklik tanpa pembungkus tambahan. Batasan penting: Text tidak dapat ditempatkan langsung di View — hanya di komponen Text lain atau sebagai konten langsung.
Menurut React Native Nested Text, 2024, komponen Text bersarang mewarisi gaya dari induk. Ini memungkinkan pengaturan gaya dasar di tingkat atas dan penimpaan properti individual untuk fragmen tertentu — mirip dengan cara kerja span dengan CSS di web.
Komponen Text menyediakan serangkaian props untuk mengatur tampilan, perilaku, dan aksesibilitas. Kategori utama: props gaya (font, ukuran, warna, perataan), props tampilan (numberOfLines, lineBreakMode), dan interaktif (onPress, onLongPress).
numberOfLines membatasi jumlah baris yang ditampilkan, menambahkan elipsis di akhir. ellipsizeMode mengatur posisi elipsis (head, middle, tail, clip). adjustsFontSizeToFit secara otomatis memperkecil ukuran font agar teks muat dalam batas yang ditentukan. lineBreakMode menentukan cara memotong teks di luar numberOfLines.
Text mendukung onPress dan onLongPress untuk menangani sentuhan. Ini memungkinkan pembuatan tautan teks tanpa menggunakan TouchableOpacity. onTextLayout mengembalikan informasi tentang posisi teks setelah rendering — berguna untuk animasi dan penentuan posisi.
Di iOS tersedia disabled (menonaktifkan teks), selectable (mengaktifkan pemilihan), dataDetectorTypes (pengenalan otomatis tautan, telepon, alamat). Di Android tersedia selectable (melalui textSelectable), includeFontPadding (menghapus spasi berlebih).
Meskipun Text secara visual mirip dengan tag HTML p dan span, perbedaan arsitekturnya signifikan. Di React Native tidak ada model DOM dengan elemen teks semantik — semua node teks ditangani melalui satu komponen Text dengan props yang berbeda.
| Karakteristik | Text (React Native) | p / span (HTML) |
|---|---|---|
| Nesting | Text di dalam Text — pewarisan gaya | p tidak bisa berisi p; span di dalam p |
| margin default | Tidak ada margin default | p memiliki margin-block-start/end |
| Pemutusan baris | Otomatis di dalam kontainer | p — blok, span — inline |
| Dukungan onPress | Dukungan bawaan | Memerlukan pembungkus tambahan |
| Pewarisan gaya | Ya, dari Text induk | Ya, kaskade CSS |
Perbedaan utama — pewarisan gaya melalui nesting Text. Jika Text luar memiliki fontSize: 18 dan color: blue, semua Text bersarang mewarisi gaya ini. Properti apa pun dapat ditimpa di Text dalam dengan menetapkan nilai tertentu. Ini menghemat kode dan membuat struktur lebih bersih.
Text mendukung sebagian besar properti CSS untuk tipografi: fontFamily, fontSize, fontWeight, fontStyle, color, letterSpacing, lineHeight, textAlign, textDecorationLine, textTransform. Di React Native, font dihubungkan di tingkat platform, bukan melalui @font-face.
Untuk menggunakan font kustom, font tersebut harus ditambahkan ke folder assets/fonts dan ditentukan di react-native.config.js. Setelah aplikasi dibangun ulang, font tersedia melalui fontFamily. React Native tidak mendukung font web (Google Fonts) secara langsung — diperlukan pengunduhan file .ttf atau .otf.
Mekanisme pewarisan di Text berbeda dari CSS. Gaya hanya ditransfer dari Text ke Text bersarang, tetapi tidak dari View ke Text. Jika perlu mengatur font untuk seluruh aplikasi, gunakan defaultProps dari komponen Text atau komponen pembungkus kustom.
<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>
Dalam contoh ini, Text luar mengatur fontSize: 18 dan color: #333. Text dalam mewarisi fontSize (18), tetapi menimpa fontWeight menjadi bold dan color menjadi #007AFF. Text luar hanya mewarisi gayanya sendiri. Ini adalah analogi yang tepat dari cara kerja span bersarang di HTML.
Mari kita lihat dua skenario umum penggunaan Text di React Native: memformat teks dengan nesting dan membuat komponen yang dapat diklik dengan batasan baris.
Dalam contoh ini, Text digunakan untuk menampilkan teks multi-baris dengan elemen yang disorot: judul, tanggal, dan konten dengan tautan.
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>
);
Dalam struktur ini ada tiga komponen Text independen (judul, tanggal, konten), masing-masing dengan gayanya sendiri. Di dalam Text dengan konten, ada Text lain dengan onPress untuk tautan. Pola ini digunakan untuk feed berita, blog, dan komentar.
Untuk menampilkan pratinjau teks dengan elipsis, digunakan numberOfLines. Ini adalah pola standar untuk kartu produk dan artikel dalam daftar.
<Text
numberOfLines={2}
ellipsizeMode="tail"
style={styles.preview}
>
{longDescription}
</Text>
Properti numberOfLines = 2 membatasi teks menjadi dua baris. Jika teks lebih panjang, React Native secara otomatis menambahkan elipsis di akhir baris kedua. Parameter ellipsizeMode: 'tail' menunjukkan bahwa elipsis harus berada di akhir (head, middle, clip juga tersedia).
Pertanyaan yang sering diajukan
React Native menggunakan set komponen minimal untuk kompatibilitas lintas platform. Alih-alih banyak tag HTML semantik, digunakan satu Text dengan berbagai gaya. Ini menyederhanakan rendering di kedua platform dari satu basis kode.
Ya, Text mendukung onPress dan onLongPress untuk menangani sentuhan. Namun, untuk tombol dengan umpan balik visual (penyorotan tekan) lebih baik menggunakan TouchableOpacity atau Pressable dengan Text di dalamnya. Text.onPress tidak menyediakan indikasi visual tekan secara default.
Text secara otomatis memutus hanya baris panjang di dalam kontainernya. Jika teks tidak terputus, periksa: apakah ada batasan lebar dari View induk, apakah nowrap tidak diatur dalam gaya, dan apakah numberOfLines tidak melebihi jumlah baris yang tersedia.
Gunakan Text bersarang dengan fontWeight: 'bold' atau bungkus teks dalam komponen dengan gaya ini. Juga dapat menerapkan fontWeight: '700' atau '800' untuk yang lebih tebal. Ketebalan tergantung pada ketersediaan jenis huruf yang sesuai di perangkat.
Tidak, Text hanya dapat berisi komponen Text lain atau string. Image tidak bisa menjadi turunan Text. Untuk menampilkan teks dengan ikon, gunakan View dengan Text dan Image sebagai elemen bersebelahan atau komponen yang mendukung penyisipan gambar.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga