React Native میں Text جزو اسکرین پر متن ظاہر کرنے کا واحد طریقہ ہے، ویب کے برعکس جہاں مختلف ٹیگز (p, span, h1-h6) استعمال ہوتے ہیں۔ Text متوالی اسٹائل وراثت، چھونے کے واقعات کی ہینڈلنگ اور خودکار لائن ریپنگ کے لیے گھریلو پن کو سپورٹ کرتا ہے۔ React Native Docs, 2024 کے مطابق، View کے بعد Text دوسرا سب سے زیادہ استعمال ہونے والا جزو ہے۔ یہ جزو iOS پر مقامی UILabel اور Android پر TextView کے طور پر رینڈر ہوتا ہے، جو فونٹس اور رسائی کی درست فعالیت کو یقینی بناتا ہے۔
اہم نکات
Text متن کے مواد کو ظاہر کرنے کے لیے ایک React Native جزو ہے۔ ویب ڈویلپمنٹ کے برعکس، جہاں متن کے لیے بہت سے معنوی ٹیگز ہوتے ہیں، React Native میں تمام متن کے عناصر Text کے ذریعے بنائے جاتے ہیں۔ یہ جزو سادہ متن اور گھریلو Text اور اسٹائل کردہ ٹکڑوں کے ساتھ پیچیدہ ڈھانچے دونوں کو ظاہر کر سکتا ہے۔
Text خود بخود لائن ریپنگ کو سنبھالتا ہے، فونٹ فیملی، سائز، رنگ اور سیدھ کا انتظام کرتا ہے۔ یہ جزو چھونے کے واقعات (onPress) کو سپورٹ کرتا ہے، جو اضافی ریپرز کے بغیر کلک کے قابل لنکس بنانے کی اجازت دیتا ہے۔ ایک اہم حد: Text کو براہ راست View کے اندر گھریلو نہیں کیا جا سکتا — صرف دوسرے Text اجزاء کے اندر یا براہ راست اولاد کے طور پر۔
React Native Nested Text, 2024 کے مطابق، گھریلو Text اجزاء والدین سے اسٹائل وراثت میں لیتے ہیں۔ یہ اوپری سطح پر ایک بنیادی اسٹائل مقرر کرنے اور مخصوص ٹکڑوں کے لیے انفرادی خصوصیات کو اوور رائڈ کرنے کی اجازت دیتا ہے — ویب پر span کے CSS کے ساتھ کام کرنے کے مشابہ۔
Text جزو نمائش، رویے اور رسائی کو کنٹرول کرنے کے لیے props کا ایک سیٹ فراہم کرتا ہے۔ اہم زمرے: اسٹائل props (فونٹ، سائز، رنگ، سیدھ)، نمائش props (numberOfLines, lineBreakMode) اور تعاملی props (onPress, onLongPress)۔
numberOfLines ظاہر ہونے والی لائنوں کی تعداد کو محدود کرتا ہے، آخر میں بیضوی نشان شامل کرتا ہے۔ ellipsizeMode بیضوی نشان کی پوزیشن کو کنٹرول کرتا ہے (head, middle, tail, clip)۔ adjustsFontSizeToFit مقررہ حدود میں متن فٹ کرنے کے لیے خود بخود فونٹ سائز کم کرتا ہے۔ lineBreakMode numberOfLines سے آگے متن کو کاٹنے کا طریقہ طے کرتا ہے۔
Text چھونے کو سنبھالنے کے لیے onPress اور onLongPress کو سپورٹ کرتا ہے۔ یہ TouchableOpacity استعمال کیے بغیر متن کے لنکس بنانے کی اجازت دیتا ہے۔ onTextLayout رینڈرنگ کے بعد متن کی ترتیب کے بارے میں معلومات لوٹاتا ہے — اینیمیشنز اور پوزیشننگ کے لیے مفید۔
iOS پر، disabled (متن کو غیر فعال کرتا ہے)، selectable (انتخاب کو فعال کرتا ہے)، dataDetectorTypes (لنکس، فونز، پتوں کا خودکار پتہ لگانا) دستیاب ہیں۔ Android پر، selectable (textSelectable کے ذریعے) اور includeFontPadding (اضافی پیڈنگ ہٹاتا ہے) دستیاب ہیں۔
اگرچہ Text بصری طور پر HTML ٹیگز p اور span سے مشابہ ہے، لیکن تعمیراتی فرق اہم ہیں۔ React Native میں معنوی متن کے عناصر کے ساتھ DOM ماڈل نہیں ہے — تمام متن کے نوڈز مختلف props کے ساتھ ایک ہی Text جزو کے ذریعے سنبھالے جاتے ہیں۔
| خصوصیت | Text (React Native) | p / span (HTML) |
|---|---|---|
| گھریلو پن | Text میں Text — اسٹائل کی وراثت | p میں p نہیں ہو سکتا؛ span p کے اندر |
| ڈیفالٹ مارجن | کوئی ڈیفالٹ مارجن نہیں | 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 تک نہیں۔ پوری ایپلیکیشن کے لیے فونٹ مقرر کرنے کے لیے، Text جزو کے defaultProps یا کسٹم ریپر جزو کا استعمال کیا جاتا ہے۔
<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 صرف اپنے اسٹائل وراثت میں لیتا ہے۔ یہ HTML میں گھریلو span کے کام کرنے کا عین مشابہ ہے۔
React Native میں Text کے دو عام استعمال کے معاملات دیکھتے ہیں: گھریلو پن کے ساتھ متن کی فارمیٹنگ اور لائن کی حد کے ساتھ کلک کے قابل جزو بنانا۔
اس مثال میں، Text نمایاں عناصر (عنوان، تاریخ، اور لنک کے ساتھ مواد) کے ساتھ کثیر السطور متن ظاہر کرنے کے لیے استعمال ہوتا ہے۔
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 کے اندر، لنک کے لیے onPress والا ایک اور Text گھریلو ہے۔ یہ پیٹرن نیوز فیڈز، بلاگز اور تبصروں کے لیے استعمال ہوتا ہے۔
بیضوی نشان کے ساتھ متن کا پیش منظر ظاہر کرنے کے لیے numberOfLines استعمال ہوتا ہے۔ یہ پروڈکٹ کارڈز اور آرٹیکل کی فہرستوں کے لیے ایک معیاری پیٹرن ہے۔
<Text
numberOfLines={2}
ellipsizeMode="tail"
style={styles.preview}
>
{longDescription}
</Text>
numberOfLines = 2 خصوصیت متن کو دو لائنوں تک محدود کرتی ہے۔ اگر متن لمبا ہے، تو React Native خود بخود دوسری لائن کے آخر میں بیضوی نشان شامل کرتا ہے۔ ellipsizeMode: 'tail' پیرامیٹر مخصوص کرتا ہے کہ بیضوی نشان آخر میں ہونا چاہیے (head، middle اور clip بھی دستیاب ہیں)۔
اکثر پوچھے گئے سوالات
React Native کراس پلیٹ فارم مطابقت کے لیے کم سے کم سیٹ اجزاء استعمال کرتا ہے۔ متعدد معنوی HTML ٹیگز کے بجائے، مختلف اسٹائل کے ساتھ ایک ہی Text استعمال ہوتا ہے۔ یہ ایک کوڈ بیس سے دونوں پلیٹ فارمز پر رینڈرنگ کو آسان بناتا ہے۔
ہاں، Text چھونے کو سنبھالنے کے لیے onPress اور onLongPress کو سپورٹ کرتا ہے۔ تاہم، بصری فیڈبیک (دباؤ کو نمایاں کرنا) والے بٹن کے لیے، Text کے اندر TouchableOpacity یا Pressable استعمال کرنا بہتر ہے۔ Text.onPress ڈیفالٹ طور پر بصری دباؤ کا اشارہ فراہم نہیں کرتا۔
Text اپنے کنٹینر کے اندر صرف لمبی لائنوں کو خود بخود لپیٹتا ہے۔ اگر متن نہیں لپکتا، تو چیک کریں: کیا والدین View میں چوڑائی کی پابندی ہے، کیا اسٹائل میں nowrap مقرر ہے، اور کیا numberOfLines دستیاب لائنوں کی تعداد سے تجاوز نہیں کر رہا۔
fontWeight: 'bold' کے ساتھ گھریلو Text استعمال کریں یا متن کو اس اسٹائل والے جزو میں لپیٹیں۔ آپ زیادہ بولڈ نظر کے لیے fontWeight: '700' یا '800' بھی استعمال کر سکتے ہیں۔ موٹائی ڈیوائس پر متعلقہ فونٹ فیملی کی دستیابی پر منحصر ہے۔
نہیں، Text میں صرف دوسرے Text اجزاء یا سٹرنگز شامل ہو سکتے ہیں۔ Image Text کی اولاد نہیں ہو سکتا۔ آئیکنز کے ساتھ متن ظاہر کرنے کے لیے، Text اور Image کو ہم جنس عناصر کے طور پر View استعمال کریں یا ان لائن تصویر کی حمایت والا جزو استعمال کریں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں