ما هي JSX؟

عندما بدأ مطورو الويب باستخدام React لبناء واجهات المستخدم، ظهرت مشكلة أساسية: كيف يمكننا كتابة مكونات (Components) تجمع بين المنطق البرمجي (JavaScript) والعرض (HTML) بشكل أنيق وسهل؟

من هنا وُلدت JSX، وهي اختصار لـ JavaScript XML، التي تسمح لنا بكتابة كود يبدو مثل HTML لكنه يعمل داخل JavaScript.

JSX هي امتداد للغة JavaScript يسمح لك بكتابة واجهات المستخدم بطريقة تشبه HTML، لكنها في الحقيقة تتحول عند البناء (Build) إلى دوال JavaScript نقية.

بمعنى آخر: JSX ليست لغة جديدة، بل مجرد صياغة (Syntax) تجعل كتابة الكود أوضح وأسهل.

مثال بسيط:

const element = <h1>مرحبا بالعالم من React!</h1>;

هذا السطر يبدو كأنه HTML، لكنه في الحقيقة كود JavaScript سيتم ترجمته في الخلفية إلى:

const element = React.createElement("h1", null, "مرحبا بالعالم من React!");

لماذا نستخدم JSX؟

JSX ليست إلزامية في React، ولكنها أصبحت معيارًا تقريبًا لأن لديها مميزات قوية:

  • تشبه HTML: مما يجعلها مألوفة وسهلة التعلم.
  • تدمج بين المنطق والعرض: يمكنك استخدام المتغيرات والدوال داخل الكود.
  • أكثر وضوحًا من استدعاءات React.createElement المتكررة.
  • تسهّل بناء مكونات تفاعلية بسرعة.

كيف تعمل JSX؟

JSX يتم تحويلها بواسطة Babel (أداة تحويل الكود) إلى JavaScript عادي يفهمه المتصفح.

على سبيل المثال:

const name = "أحمد";
const element = <h1>مرحبا {name}!</h1>;

يتم تحويله إلى:

const name = "أحمد";
const element = React.createElement("h1", null, `مرحبا ${name}!`);

لاحظ كيف يمكننا استخدام المتغيرات داخل JSX عن طريق الأقواس المعقوفة {}.


إدماج التعبيرات (Expressions) داخل JSX

يمكنك كتابة أي تعبير JavaScript داخل الأقواس {} مثل:

const user = { firstName: "سارة", lastName: "خالد" };

function getFullName(user) {
  return user.firstName + " " + user.lastName;
}

const element = <h2>مرحبا {getFullName(user)}</h2>;

النتيجة ستكون:
مرحبا سارة خالد


السمات (Attributes) في JSX

السمات في JSX تشبه HTML، لكن مع بعض الاختلافات:

  • بعض الأسماء تختلف قليلًا مثل classclassName
  • forhtmlFor
  • القيم يمكن أن تكون JavaScript expressions داخل {}

مثال:

const element = <img src={user.avatarUrl} alt="صورة المستخدم" className="profile" />;

JSX والشرطيات

يمكنك استخدام التعابير الشرطية داخل JSX، مثل:

const isLoggedIn = true;

const element = (
  <div>
    {isLoggedIn ? <p>أهلا بعودتك!</p> : <p>من فضلك سجل الدخول</p>}
  </div>
);

JSX والحلقات (Loops)

يمكنك استخدام map لإنشاء عناصر متكررة:

const items = ["HTML", "CSS", "JavaScript", "React"];

const list = (
  <ul>
    {items.map((item, index) => <li key={index}>{item}</li>)}
  </ul>
);

تنظيم الكود مع JSX

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

function Welcome(props) {
  return <h1>مرحبا {props.name}</h1>;
}

const element = <Welcome name="ليلى" />;

JSX ليست HTML

من المهم أن نتذكر أن JSX ليست HTML حقيقية.
الاختلافات الأساسية:

  • يجب إغلاق كل وسم حتى لو كان فارغًا (<img />)
  • الأسماء الحساسة مثل classclassName
  • يمكن دمج JavaScript داخل {}

لماذا JSX تجعل React أسهل؟

  • وضوح أكبر: الكود أسهل في القراءة والفهم.
  • تقليل الأخطاء: بدلًا من كتابة استدعاءات طويلة لـ React.createElement.
  • تشجيع المكونات: يجعل تقسيم واجهات المستخدم إلى أجزاء صغيرة قابلة لإعادة الاستخدام أسهل.
  • قوة الدمج: يمكنك دمج المنطق والعرض في نفس الملف بدون الحاجة لقوالب منفصلة.

JSX والمبتدئين

قد يظن المبتدئ أن JSX لغة جديدة، لكن الحقيقة أنها مجرد أداة لتبسيط كتابة React. بمجرد فهم الأساسيات، ستجد أن JSX تجعل بناء واجهات المستخدم أكثر متعة وأقل تعقيدًا.


الخلاصة

  • JSX هي صياغة خاصة بـ React تشبه HTML.
  • تتحول إلى JavaScript عادي باستخدام Babel.
  • تسهّل كتابة المكونات وتجعل الكود أوضح.
  • ليست إلزامية، ولكنها أصبحت المعيار الفعلي في تطوير React.

بفضل JSX، أصبح بإمكان المطورين التركيز على المكونات والتفاعل بدلًا من الغرق في تفاصيل إنشاء العناصر يدويًا.
إذا كنت مبتدئًا في React، فإن تعلم JSX هو الخطوة الأولى لفهم المكتبة بشكل أعمق.


هل جربت استخدام JSX من قبل؟ ✨
شاركنا رأيك وتجربتك!