0Pricing
React Academy · درس

مكوّنات React Native الأساسية مقابل DOM للويب

طابِق View وText وImage وScrollView مع نظائرها في DOM وافهم نموذج الجسر.

مكوّنات React Native الأساسية مقابل DOM للويب درس مجاني في React Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.

لماذا لا توجد HTML في React Native؟

يعرض React Native مكوّنات واجهة مستخدم أصلية لنظامَي iOS وAndroid، وليس شجرة DOM في المتصفح. فلا يوجد <div> أو <p> أو <img> — إذ يملك كل نظام أساسي بدائياته الأصلية.

View — المكافئ لـ div

يُعد View أبسط حاوية تخطيط في React Native. وهو يقابل UIView في iOS وandroid.view.View في Android. فكّر فيه بوصفه <div> لا يمكنه احتواء نص مباشرةً.

import { View, StyleSheet } from 'react-native';

function Card() {
  return (
    <View style={styles.card}>
      {/* children go here */}
    </View>
  );
}

const styles = StyleSheet.create({ card: { padding: 16, borderRadius: 8 } });

Text — المكافئ لـ p/span

يلزم استخدام Text لأي نص مرئي. وعلى خلاف الويب، لا يمكنك وضع سلسلة نصية مباشرةً داخل View — بل يجب تغليفها داخل <Text>.

import { View, Text } from 'react-native';

function Greeting() {
  return (
    <View>
      <Text style={{ fontSize: 24, fontWeight: 'bold' }}>Hello!</Text>
      <Text>Welcome to React Native.</Text>
    </View>
  );
}

Image — المكافئ لـ img

يعرض Image الصور. استخدم الخاصية source مع require() للأصول المحلية، أو كائن { uri: '...' } للصور الموجودة على الشبكة.

import { Image } from 'react-native';

// Local asset:
<Image source={require('./assets/logo.png')} style={{ width: 100, height: 100 }} />

// Network image (must provide dimensions):
<Image source={{ uri: 'https://example.com/photo.jpg' }} style={{ width: 200, height: 150 }} />

ScrollView — المكافئ لـ overflow:scroll

يُعد ScrollView حاوية قابلة للتمرير. وعلى خلاف الويب، يجب استخدامه صراحةً — إذ لا يدعم View التمرير. ويفضّل استخدام FlatList للقوائم الطويلة.

import { ScrollView, Text } from 'react-native';

function Article({ paragraphs }) {
  return (
    <ScrollView>
      {paragraphs.map((p, i) => <Text key={i}>{p}</Text>)}
    </ScrollView>
  );
}

FlatList — القائمة الافتراضية

يعرض FlatList العناصر المرئية فقط، ويعيد استخدام العناصر الموجودة خارج الشاشة — وهذا ضروري لتحقيق أداء جيد مع مجموعات البيانات الكبيرة.

import { FlatList, Text, View } from 'react-native';

function UserList({ users }) {
  return (
    <FlatList
      data={users}
      keyExtractor={u => u.id}
      renderItem={({ item }) => <Text>{item.name}</Text>}
    />
  );
}

TouchableOpacity — المكافئ للزر

تضيف TouchableOpacity (وPressable في إصدارات RN الأحدث) استجابة للمس إلى أي عرض. وتتولى الخاصية onPress معالجة النقرات.

import { TouchableOpacity, Text } from 'react-native';

function Button({ onPress, title }) {
  return (
    <TouchableOpacity onPress={onPress} activeOpacity={0.7}>
      <Text>{title}</Text>
    </TouchableOpacity>
  );
}

TextInput — المكافئ لحقل الإدخال

يُعد TextInput حقل الإدخال المتحكمًا به. وهو يدعم value وonChangeText وplaceholder وأنواع لوحات المفاتيح.

import { TextInput, useState } from 'react-native';

function SearchBar() {
  const [query, setQuery] = useState('');
  return (
    <TextInput
      value={query}
      onChangeText={setQuery}
      placeholder="Search..."
      keyboardType="default"
    />
  );
}

ActivityIndicator — مؤشر التحميل

يُعد ActivityIndicator مؤشر التحميل الأصلي. ففي iOS يظهر كمؤشر دائري، وفي Android كمؤشر تقدّم دائري بتصميم Material.

import { ActivityIndicator, View } from 'react-native';

<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
  <ActivityIndicator size="large" color="#4f46e5" />
</View>

SafeAreaView

يضيف SafeAreaView تلقائيًا مسافات داخلية لتجنب شقوق الأجهزة وأشرطة الحالة ومؤشرات الشاشة الرئيسية في iOS وAndroid.

import { SafeAreaView } from 'react-native-safe-area-context';

export default function App() {
  return (
    <SafeAreaView style={{ flex: 1 }}>
      <MyScreen />
    </SafeAreaView>
  );
}

Modal

يعرض Modal طبقة فوق التطبيق. وتتحكم الخاصية visible في ظهورها.

import { Modal, View, Text } from 'react-native';

<Modal visible={showModal} animationType="slide" transparent={true}>
  <View style={styles.overlay}>
    <View style={styles.dialog}>
      <Text>Are you sure?</Text>
    </View>
  </View>
</Modal>

تحقق سريع

أي مكوّن في React Native يجب استخدامه لعرض أي نص على الشاشة؟

مراجعة

يطابق React Native مفاهيم الويب مع مكوّنات أصلية: View (div)، وText (p)، وImage (img)، وScrollView، وFlatList (قائمة افتراضية)، وTextInput (حقل إدخال)، وTouchableOpacity (زر). استخدم دائمًا SafeAreaView لتخطيط الجذر.

الأسئلة الشائعة

هل درس «مكوّنات React Native الأساسية مقابل DOM للويب» مجاني؟

نعم — نص درس «مكوّنات React Native الأساسية مقابل DOM للويب» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.

ماذا ستتعلم في «مكوّنات React Native الأساسية مقابل DOM للويب»؟

طابِق View وText وImage وScrollView مع نظائرها في DOM وافهم نموذج الجسر. تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟

لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «مكوّنات React Native الأساسية مقابل DOM للويب»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟

نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. مكوّنات React Native الأساسية مقابل DOM للويب
  2. التنسيق باستخدام StyleSheet API وFlexbox
  3. التنقل باستخدام Expo Router
  4. الوصول إلى واجهات الجهاز: الكاميرا والموقع والإشعارات الفورية
← العودة إلى React Academy