تاريخ React – استعراض شامل وتحليل تقني

يوليو 26, 2025

1. البدايات: النشأة داخل Facebook

في عام 2011، واجه مهندسو Facebook تحديًا متزايدًا في صيانة واجهات المستخدم المعقدة والتفاعلية. تم تطوير مكتبة داخلية تُدعى BoltJS، ثم تغيّر اسمها إلى FaxJS، وأخيرًا استقر الاسم على React. تم إطلاق React كمكتبة مفتوحة المصدر رسميًا في مايو 2013. كان أول استخدام لها في Facebook Feed، ثم في Instagram عام 2012.

// الشكل الأولي لإنشاء عنصر في React بدون JSX
const element = React.createElement('h1', null, 'Hello, React!');

2. JSX و Virtual DOM: الثورة التفاعلية

React قدمت مفهوم JSX لدمج JavaScript مع شيفرة HTML بشكل أكثر وضوحًا، وأدخلت تقنية Virtual DOM لتقليل عدد العمليات على DOM الفعلي، مما حسن الأداء بشكل كبير خاصة في التطبيقات الكبيرة.

function Counter() {
  const [count, setCount] = React.useState(0);
  return (
    <div>
      <p>لقد ضغطت {count} مرة</p>
      <button onClick={() => setCount(count + 1)}>اضغطني</button>
    </div>
  );
}

JSX لم تكن مدعومة بشكل مباشر من المتصفح، لذا تُترجم باستخدام أدوات مثل Babel.

3. المكوّنات المعتمدة على الفئات (Class Components)

قبل ظهور Hooks، كانت React تعتمد على مكوّنات الفئات للتحكم في الحالة ودورات حياة المكوّن:

class Welcome extends React.Component {
  constructor(props) {
    super(props);
    this.state = { name: 'زائر' };
  }

  componentDidMount() {
    console.log('تم تركيب المكوّن');
  }

  render() {
    return <h2>مرحبًا، {this.state.name}</h2>;
  }
}

رغم قوتها، كانت مكوّنات الفئات تزداد تعقيدًا بمرور الوقت، مما دفع نحو البحث عن بديل أبسط وأكثر مرونة.

4. Hooks: نقلة نوعية في كتابة المكوّنات

تم تقديم React Hooks في الإصدار 16.8 عام 2019، لتسمح باستخدام الحالة والتأثيرات الجانبية في المكوّنات الوظيفية. من أشهرها:

  • useState لإدارة الحالة المحلية.
  • useEffect لتنفيذ منطق بعد التصيير.
  • useContext للوصول إلى السياق (Context).
function Clock() {
  const [time, setTime] = React.useState(new Date());

  React.useEffect(() => {
    const timer = setInterval(() => setTime(new Date()), 1000);
    return () => clearInterval(timer);
  }, []);

  return <p>الوقت الحالي: {time.toLocaleTimeString()}</p>;
}

5. React Fiber: إعادة كتابة جوهر React

React Fiber هو محرك التصيير الجديد الذي قُدّم في React 16، يسمح بتقسيم العمل إلى أجزاء صغيرة يمكن معالجتها بشكل غير متزامن، مما مكن React من تنفيذ التصيير المتزامن وتحسين تجربة المستخدم.

6. Server-Side Rendering (SSR) ومكونات الخادم

منذ بداياتها، دعمت React التصيير على الخادم (SSR) باستخدام ReactDOMServer. لكن ظهرت لاحقًا React Server Components لتفصل بين منطق الخادم والعميل وتقلل التكرار وتحسن الأداء.

async function ProductServer() {
  const res = await fetch('https://api.example.com/products/1');
  const product = await res.json();
  return <div>المنتج: {product.name}</div>;
}

7. React 19: تحديثات موجهة لتجربة المطور

React 19 (ديسمبر 2024) جلب مزايا قوية مثل useFormStatus و Server Actions، لتبسيط إدارة النماذج وتحسين التفاعل مع الخادم:

function ContactForm() {
  const status = useFormStatus();
  return (
    <form action="/api/contact">
      <input name="email" required />
      <button disabled={status.pending}>إرسال</button>
    </form>
  );
}

8. التحسينات الذكية وحفظ الحالة خارج الشاشة

React الآن يدعم الاحتفاظ بالحالة حتى للمكوّنات غير المرئية في واجهة المستخدم، مثل Preserving Offscreen State، مما يحافظ على معلومات مثل scroll أو بيانات النموذج عند التنقل بين الصفحات.

🔍 خلاصة وتحليل نهائي

  • React بدأت كمكتبة بسيطة لحل مشاكل الواجهة المعقدة، وأصبحت إطارًا قويًا يدعم تطبيقات ضخمة.
  • التحولات من Class إلى Hooks، ومن DOM مباشر إلى Virtual DOM، ساهمت في جعل الكود أكثر وضوحًا وقابلية لإعادة الاستخدام.
  • التركيز المستقبلي على Server Components و React Compiler يفتح المجال لأداء غير مسبوق وتجربة تطوير أكثر استقرارًا.

المدونة

وقّف نسخ الكود! اتعلم تستخدم Traits في Laravel صح

يوليو 01, 2025

🚫 وقّف نسخ الكود! لو عندك نفس المنطق في كذا Model أو Controller زي Slug أو Logging، Traits في Laravel هتوفر عليك تعب الكتابة والتكرار. 1. إيه هو...

ألوان في CSS - شرح مبسّط

يونيو 26, 2025

ألوان في CSS - شرح مبسّط النهارده هنتكلم عن الألوان في CSS: ازاي بنحددها، وخصوصًا الطرق الحديثة زي lab() وoklch(). 1. يعني إيه لون؟ مفيش حاجة اسم...

مقارنة بين Scopes + Traits × UseEloquentBuilder في Laravel

يوليو 13, 2025

في Laravel، بنحتاج دايمًا نكتب استعلامات شبه بعض في أكتر من مكان. Laravel بتوفر طريقتين أساسيين نقدر نستخدمهم علشان نرتّب الاستعلامات دي: Scopes + Tra...

استكشف أقوى تقنيات Laravel الحديثة: Inertia.js، View Creators، وHLS خطوة بخطوة

يوليو 27, 2025

أدوات قوية تقدر تستخدمها لتطوير تطبيقات Laravel بشكل احترافي: Inertia.js v2، وView Creators، وحزمة Laravel HLS لبث الفيديوهات بأمان. ١. Inertia.j...

أهم تحديثات Laravel و PHP لكتابة كود أنظف وأسرع

أغسطس 17, 2025

Laravel Global Scopes: Automatic Query Filtering Eloquent الأهمية: فرض فلترة ثابتة على جميع استعلامات الموديل (مثل Soft Deletes) دون تكرا...

دليل للأنيميشن المتحركة بالسكّول بس بـ CSS

يونيو 26, 2025

دليل للأنيميشن المتحركة بالسكّول بـ CSS دلوقتي تقدر تربط الأنيميشن بتاعتك بـ السكّول من غير جافاسكريبت &mdash; كله CSS بحت. 1. التلات مكونات بتوع...