تفاعل JSX


ما هو JSX؟

JSX لتقف على JavaScript XML.

يتيح لنا JSX كتابة HTML في React.

تسهل JSX كتابة وإضافة HTML في React.


ترميز JSX

يتيح لنا JSX كتابة عناصر HTML في JavaScript ووضعها في DOM بدون أي createElement()  و / أو appendChild()طرق.

JSX يحول علامات HTML إلى عناصر تفاعل.

لست مطالبًا باستخدام JSX ، لكن JSX تسهل كتابة تطبيقات React.

هنا مثالان. الأول يستخدم JSX والثاني لا:

مثال 1

JSX:

const myelement = <h1>I Love JSX!</h1>;

ReactDOM.render(myelement, document.getElementById('root'));

مثال 2

بدون JSX:

const myelement = React.createElement('h1', {}, 'I do not use JSX!');

ReactDOM.render(myelement, document.getElementById('root'));

كما ترى في المثال الأول ، يتيح لنا JSX كتابة HTML مباشرة داخل كود JavaScript.

JSX هو امتداد للغة JavaScript يعتمد على ES6 ، ويتم ترجمته إلى JavaScript عادي في وقت التشغيل.


w3schools CERTIFIED . 2022

الحصول على شهادة!

أكمل وحدات React ، ونفّذ التمارين ، وخذ الامتحان واحصل على شهادة w3schools !!

95 دولارًا ENROLL

التعبيرات في JSX

باستخدام JSX ، يمكنك كتابة تعبيرات داخل أقواس معقوفة { }.

يمكن أن يكون التعبير متغير React أو خاصية أو أي تعبير JavaScript صالح آخر. سيقوم JSX بتنفيذ التعبير وإرجاع النتيجة:

مثال

نفذ التعبير 5 + 5:

const myelement = <h1>React is {5 + 5} times better with JSX</h1>;


إدراج كتلة كبيرة من HTML

لكتابة HTML على عدة أسطر ، ضع HTML داخل أقواس:

مثال

أنشئ قائمة بثلاثة عناصر قائمة:

const myelement = (
  <ul>
    <li>Apples</li>
    <li>Bananas</li>
    <li>Cherries</li>
  </ul>
);


عنصر واحد عالي المستوى

يجب أن يتم تغليف كود HTML في عنصر مستوى أعلى واحد .

لذا ، إذا كنت ترغب في كتابة فقرتين ، يجب أن تضعهما داخل عنصر أصلي ، مثل divعنصر.

مثال

لف فقرتين داخل عنصر DIV واحد:

const myelement = (
  <div>
    <p>I am a paragraph.</p>
    <p>I am a paragraph too.</p>
  </div>
);

سيظهر JSX خطأ إذا كان HTML غير صحيح ، أو إذا كان HTML يفتقد عنصرًا رئيسيًا.

بدلاً من ذلك ، يمكنك استخدام "جزء" لالتفاف عدة أسطر. سيؤدي هذا إلى منع إضافة عقد إضافية إلى DOM بلا داعٍ.

جزء يشبه علامة HTML فارغة <></>:.

مثال

لف فقرتين داخل جزء:

const myelement = (
  <>
    <p>I am a paragraph.</p>
    <p>I am a paragraph too.</p>
  </>
);


يجب إغلاق العناصر

تتبع JSX قواعد XML ، وبالتالي يجب إغلاق عناصر HTML بشكل صحيح.

مثال

أغلق العناصر الفارغة بامتداد/>

const myelement = <input type="text" />;

سيظهر JSX خطأ إذا لم يتم إغلاق HTML بشكل صحيح.


فئة السمة = className

السمة classهي سمة مستخدمة كثيرًا في HTML ، ولكن نظرًا لأن JSX يتم تقديمه على هيئة JavaScript ، classوالكلمة الأساسية هي كلمة محجوزة في JavaScript ، فلا يُسمح لك باستخدامها في JSX.

استخدم السمة classNameبدلاً من ذلك.

حل JSX هذا باستخدام classNameبدلاً من ذلك. عندما يتم تقديم JSX ، فإنه يترجم className السمات إلى classسمات.

مثال

استخدم السمة classNameبدلاً من classJSX:

const myelement = <h1 className="myclass">Hello World</h1>;


الشروط - عبارات إذا

تدعم React التعليمات if، لكن ليس داخل JSX.

لتتمكن من استخدام العبارات الشرطية في JSX ، يجب عليك وضع if العبارات خارج JSX ، أو يمكنك استخدام تعبير ثلاثي بدلاً من ذلك:

الخيار 1:

اكتب ifعبارات خارج كود JSX:

مثال

اكتب "مرحبًا" إذا كانت xأقل من 10 ، وإلا "وداعًا":

const x = 5;
let text = "Goodbye";
if (x < 10) {
  text = "Hello";
}

const myelement = <h1>{text}</h1>;

الخيار 2:

استخدم التعبيرات الثلاثية بدلاً من ذلك:

مثال

اكتب "مرحبًا" إذا كانت xأقل من 10 ، وإلا "وداعًا":

const x = 5;

const myelement = <h1>{(x) < 10 ? "Hello" : "Goodbye"}</h1>;

لاحظ أنه لتضمين تعبير JavaScript داخل JSX ، يجب أن يتم تغليف JavaScript بأقواس معقوفة ، {}.


اختبر نفسك مع التمارين

ممارسه الرياضه:

تقديم عنصر <p> بدون استخدام JSX.

const paragraph = React.createElement(, {}, 'This is a paragraph without using JSX!');

ReactDOM.render(paragraph, document.getElementById('root'));