الفرق بين المراجعتين ل"React/react without jsx"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:React بدون JSX}}</noinclude>')
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:React بدون JSX}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:React بدون JSX}}</noinclude>
 +
لا تُعد صياغة JSX ضرورية لاستخدام React، حيث يكون استخدام React بدون JSX مناسبًا بشكلٍ خاص عندما لا ترغب بإعداد مرحلة التصريف في بيئة البناء لديك.
 +
 +
يُعتبَر كل عنصر JSX تجميلًا من ناحية الصياغة بدل استدعاء التابع ‎<code>React.createElement(component, props, ...children)‎</code>، لذلك يُمكنك فعل أي شيء باستخدام JavaScript بدل JSX.
 +
 +
على سبيل المثال تُكتب هذه الشيفرة باستخدام JSX على الشكل التالي:<syntaxhighlight lang="javascript">
 +
class Hello extends React.Component {
 +
  render() {
 +
    return <div>أهلًا بـ {this.props.toWhat}</div>;
 +
  }
 +
}
 +
 +
ReactDOM.render(
 +
  <Hello toWhat="العالم" />,
 +
  document.getElementById('root')
 +
);
 +
 +
</syntaxhighlight>تُصرَّف هذه الشيفرة إلى الشيفرة التالية التي لا تستخدم JSX:<syntaxhighlight lang="javascript">
 +
class Hello extends React.Component {
 +
  render() {
 +
    return React.createElement('div', null, `أهلًا بـ ${this.props.toWhat}`);
 +
  }
 +
}
 +
 +
ReactDOM.render(
 +
  React.createElement(Hello, {toWhat: 'العالم'}, null),
 +
  document.getElementById('root')
 +
);
 +
 +
</syntaxhighlight>إن كنت مهتمًا برؤية المزيد من الأمثلة حول كيفية تحويل JSX إلى JavaScript، فبإمكانك تجربة مُصرِّف Babel على الإنترنت.
 +
 +
يُمكِن تزويد المُكوّن كسلسلة نصية، أو كصنف فرعي من <code>React.Component</code>، أو كدالة مُجرَّدة من أجل المُكوّنات بدون الحالة.
 +
 +
إن تعبت من كثرة كتابة <code>React.Component</code> فمن الأساليب الشائعة هي الطريقة المختصرة التالية:<syntaxhighlight lang="javascript">
 +
const e = React.createElement;
 +
 +
ReactDOM.render(
 +
  e('div', null, 'أهلًا بالعالم'),
 +
  document.getElementById('root')
 +
);
 +
 +
</syntaxhighlight>إن استخدمتَ هذه الصيغة المختصرة لأجل <code>React.createElement</code> فسيكون من المناسب تمامًا استخدام React بدون JSX.
 +
 +
تستطيع الرجوع بشكلٍ بديل إلى مشاريع مجتمع React مثل <code>react-hyperscript</code> و <code>hyperscript-helpers</code> والتي تُوفِّر لنا صياغة مُختصرة أكثر.

مراجعة 07:07، 15 أغسطس 2018

لا تُعد صياغة JSX ضرورية لاستخدام React، حيث يكون استخدام React بدون JSX مناسبًا بشكلٍ خاص عندما لا ترغب بإعداد مرحلة التصريف في بيئة البناء لديك.

يُعتبَر كل عنصر JSX تجميلًا من ناحية الصياغة بدل استدعاء التابع ‎React.createElement(component, props, ...children)‎، لذلك يُمكنك فعل أي شيء باستخدام JavaScript بدل JSX.

على سبيل المثال تُكتب هذه الشيفرة باستخدام JSX على الشكل التالي:

class Hello extends React.Component {
  render() {
    return <div>أهلًا بـ {this.props.toWhat}</div>;
  }
}

ReactDOM.render(
  <Hello toWhat="العالم" />,
  document.getElementById('root')
);

تُصرَّف هذه الشيفرة إلى الشيفرة التالية التي لا تستخدم JSX:

class Hello extends React.Component {
  render() {
    return React.createElement('div', null, `أهلًا بـ ${this.props.toWhat}`);
  }
}

ReactDOM.render(
  React.createElement(Hello, {toWhat: 'العالم'}, null),
  document.getElementById('root')
);

إن كنت مهتمًا برؤية المزيد من الأمثلة حول كيفية تحويل JSX إلى JavaScript، فبإمكانك تجربة مُصرِّف Babel على الإنترنت.

يُمكِن تزويد المُكوّن كسلسلة نصية، أو كصنف فرعي من React.Component، أو كدالة مُجرَّدة من أجل المُكوّنات بدون الحالة.

إن تعبت من كثرة كتابة React.Component فمن الأساليب الشائعة هي الطريقة المختصرة التالية:

const e = React.createElement;

ReactDOM.render(
  e('div', null, 'أهلًا بالعالم'),
  document.getElementById('root')
);

إن استخدمتَ هذه الصيغة المختصرة لأجل React.createElement فسيكون من المناسب تمامًا استخدام React بدون JSX.

تستطيع الرجوع بشكلٍ بديل إلى مشاريع مجتمع React مثل react-hyperscript و hyperscript-helpers والتي تُوفِّر لنا صياغة مُختصرة أكثر.