تكرار السؤال: …
الإجابة المختصرة
هذه هي المعمارية القديمة (Legacy)؛ فمنذ React Native 0.76 أصبحت New Architecture هي الافتراضية، وتتجه الإصدارات الأحدث إلى إزالة القديمة نهائيًا. كانت تعتمد على جسر (Bridge) يتبادل رسائل JSON غير متزامنة ومجمعة بين خيط JavaScript وخيط Native، مما يسبب اختناقًا عند تمرير بيانات مكثفة.
الشرح
يتألف النظام الكلاسيكي من ثلاثة خيوط رئيسية: خيط JavaScript، خيط Native/UI، وخيط Shadow Tree لحساب التخطيط عبر Yoga. الاتصال بين JS و Native كان يمر عبر الـ Bridge في هيئة سلاسل نصوص JSON غير متزامنة. عند التعامل مع حركات سريعة أو تمرير قوائم ضخمة، يزدحم الـ Bridge بالرسائل مما يؤدي لتأخر الاستجابة وسقوط الفريمات (Dropped Frames).
مثال بالكود
import { NativeModules } from "react-native";
// Legacy architecture: the call is serialized to JSON, queued, sent asynchronously over the bridge
const { Battery } = NativeModules;
Battery.getLevel((level) => {
console.log("battery:", level); // the answer comes back later through the bridge
});
// Anything that fires very often (scroll, touch, gestures) floods the bridge with JSON messages
// and delays the UI — the main bottleneck the New Architecture removes.أخطاء شائعة
- الاعتقاد بأن المعمارية القديمة تحول كود JavaScript مباشرة إلى كود آلي من لغات Objective-C أو Java.
أسئلة متابعة
- ما هي خيوط المعالجة الرئيسية (Threads) في تطبيق React Native وكيف يتم التوزيع بينها؟
- ما هي الـ New Architecture في React Native وما هو دور الـ JSI (JavaScript Interface)؟