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 για εμφάνιση κειμένου
  • Υποστηρίζει ένθεση για styling μεμονωμένων τμημάτων κειμένου
  • Το 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 παρέχει ένα σύνολο props για διαχείριση εμφάνισης, συμπεριφοράς και προσβασιμότητας. Βασικές κατηγορίες: props στυλ (γραμματοσειρά, μέγεθος, χρώμα, στοίχιση), props εμφάνισης (numberOfLines, lineBreakMode) και διαδραστικά (onPress, onLongPress).

Props εμφάνισης κειμένου

numberOfLines περιορίζει τον αριθμό των εμφανιζόμενων γραμμών, προσθέτοντας αποσιωπητικά στο τέλος. ellipsizeMode ελέγχει τη θέση των αποσιωπητικών (head, middle, tail, clip). adjustsFontSizeToFit μειώνει αυτόματα το μέγεθος γραμματοσειράς ώστε το κείμενο να χωρά στα καθορισμένα όρια. lineBreakMode καθορίζει πώς θα περικοπεί το κείμενο πέρα από το numberOfLines.

Διαδραστικά props

Το Text υποστηρίζει onPress και onLongPress για επεξεργασία αφής. Αυτό επιτρέπει τη δημιουργία συνδέσμων κειμένου χωρίς χρήση TouchableOpacity. onTextLayout επιστρέφει πληροφορίες σχετικά με τη θέση του κειμένου μετά την απόδοση — χρήσιμο για κινούμενα σχέδια και τοποθέτηση.

Props πλατφόρμας

Στο iOS είναι διαθέσιμα disabled (απενεργοποίηση κειμένου), selectable (ενεργοποίηση επιλογής), dataDetectorTypes (αυτόματη αναγνώριση συνδέσμων, τηλεφώνων, διευθύνσεων). Στο Android είναι διαθέσιμα selectable (μέσω textSelectable), includeFontPadding (αφαίρεση περιττών διαστημάτων).

Διαφορές του Text από τα στοιχεία HTML p και span

Αν και το Text οπτικά μοιάζει με τις ετικέτες HTML p και span, οι αρχιτεκτονικές διαφορές είναι σημαντικές. Στο React Native λείπει το μοντέλο DOM με σημασιολογικά στοιχεία κειμένου — όλοι οι κόμβοι κειμένου διαχειρίζονται μέσω ενός ενιαίου στοιχείου Text με διαφορετικά props.

Χαρακτηριστικό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 κληρονομούν αυτά τα στυλ. Οποιαδήποτε ιδιότητα μπορεί να παρακαμφθεί στο εσωτερικό Text ορίζοντας συγκεκριμένη τιμή. Αυτό εξοικονομεί κώδικα και καθιστά τη δομή πιο καθαρή.

Styling κειμένου και γραμματοσειρές

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

Συχνές ερωτήσεις

Γιατί δεν υπάρχουν ετικέτες h1, p, span στο React Native;

Το 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
  • Βασικά props: numberOfLines, ellipsizeMode, onPress, selectable, adjustsFontSizeToFit
  • Το Text αποδίδεται σε εγγενές UILabel (iOS) ή TextView (Android)
  • Οι γραμματοσειρές συνδέονται σε επίπεδο πλατφόρμας μέσω fontFamily στο StyleSheet
  • Τα στυλ του Text δεν κληρονομούνται από το View — απαιτείται ρητός ορισμός ή defaultProps
  • Για κλικ άνω συνδέσμους, χρησιμοποιήστε ένθετο Text με onPress, όχι TouchableOpacity

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης