تمت ترجمة هذا المستند بواسطة الذكاء الاصطناعي. للحصول على معلومات دقيقة، يرجى الرجوع إلى النسخة الإنجليزية.
يدعم RunJS صيغة JSX، مما يتيح لك كتابة التعليمات البرمجية بشكل مشابه لمكونات React. يتم تجميع (compile) JSX تلقائياً قبل التنفيذ.
ctx.libs.React.createElement و ctx.libs.React.Fragment.ctx.libs.React تلقائياً بعد التجميع.ctx.importAsync('react@x.x.x')، سيتحول JSX لاستخدام تابع createElement من تلك النسخة المحددة.يتضمن RunJS مكتبة React ومكتبات واجهة المستخدم (UI) الشائعة بشكل مدمج. يمكنك الوصول إليها مباشرة عبر ctx.libs دون الحاجة لاستخدام import:
createRoot إذا لزم الأمر)عند كتابة JSX مباشرة، لا تحتاج إلى تفكيك (destructure) React. ستحتاج فقط إلى التفكيك من ctx.libs عند استخدام Hooks (مثل useState و useEffect) أو Fragment (<>...</>):
ملاحظة: لا يمكن الخلط بين React المدمج و React الخارجي المستورد عبر ctx.importAsync(). إذا كنت تستخدم مكتبة واجهة مستخدم خارجية، فيجب استيراد React أيضاً من نفس المصدر الخارجي.
عند تحميل إصدار محدد من React ومكتبات واجهة المستخدم عبر ctx.importAsync()، سيستخدم JSX نسخة React تلك:
إذا كانت antd تعتمد على react/react-dom، يمكنك تحديد نفس الإصدار عبر deps لتجنب تعدد النسخ:
ملاحظة: عند استخدام React خارجي، يجب أيضاً استيراد مكتبات واجهة المستخدم مثل antd عبر ctx.importAsync(). لا تخلط بينها وبين ctx.libs.antd.
<Button type="primary">نص</Button><>...</> أو <React.Fragment>...</React.Fragment> (يتطلب تفكيك const { React } = ctx.libs عند استخدام Fragment){expression} في JSX لإدراج المتغيرات أو العمليات، مثل {ctx.user.name} أو {count + 1}؛ لا تستخدم صيغة القوالب {{ }}.{flag && <span>المحتوى</span>} أو {flag ? <A /> : <B />}array.map() لإرجاع قائمة من العناصر، وتأكد من تعيين key ثابت لكل عنصر.