المكون AppRegistry في ReactNative
ملاحظة: إذا كنت تستخدم expo-cli فلا يوجد سوى مكوّن إدخال واحد مسجل مسبقًا في AppRegistry ويُتعامل معه تلقائيًا، لذلك فلا حاجة لاستخدام واجهة برمجة التطبيقات (API) هذه.
يُمثل AppRegistry نقطة دخول جافا سكريبت لتشغيل جميع تطبيقات React Native. ويجب تسجيل جميع مكونات التطبيق الجذرية مع AppRegistry.registerComponent، ومن ثم يتمكن النظام الأصلي من تحميل التطبيق وتشغيله عن طريق استدعاء الدالة AppRegistry.runApplication.
import { Text, AppRegistry } from 'react-native';
const App = (props) => (
<View>
<Text>App1</Text>
</View>
);
AppRegistry.registerComponent('Appname', () => App);
لإيقاف التطبيق عند ازالة واجهة معيّنة (View)، استدعي الدالة AppRegistry.unmountApplicationComponenetAtRootTag على الوسم الذي مُرّرت سابقًا للدالة runApplication.
يجب أن يكون AppRegistry مطلوبًا في بداية سلسلة المطلوبات للتأكد من إعداد بيئة التنفيذ الصحيح قبل أن تكون هناك حاجة لوحدات أخرى.
الدوال
setWrapperComponentProvider
static setWrapperComponenetProvider(provider)
المعاملات
| الاسم | النوع | مطلوب |
|---|---|---|
provider
|
ComponentProvider
|
نعم |
enableArchitectureIndicator
static enableArchitectureIndicator(enabled)
المعاملات
| الاسم | النوع | مطلوب |
|---|---|---|
enabled
|
قيمة منطقية (boolean) | نعم |
registerConfig
static registerConfig([config])
| الاسم | النوع | مطلوب |
|---|---|---|
config
|
AppConfig | نعم |
المفاتيح الصالحة للاستخدام مع AppConfig
| الاسم | النوع | مطلوب |
|---|---|---|
appKey
|
سلسلة نصية (string) | نعم |
component
|
ComponentProvider | لا |
run
|
دالة (function) | لا |
section
|
قيمة منطقية (bool) | لا |
registerComponent()
static registerComponent(appKey, componentProvider, section?)
المعاملات
| الاسم | النوع | مطلوب |
|---|---|---|
appKey
|
سلسلة نصية (string) | نعم |
componenetProvider
|
ComponentProvider
|
نعم |
section
|
قيمة منطقية (bool) | لا |
registerRunnable()
static registerRunnable(appKey, run)
المعاملات
| الاسم | النوع | مطلوب |
|---|---|---|
appKey
|
سلسلة نصية (string) | نعم |
run
|
دالة (function) | نعم |
registerSection
static registerSection(appKey, component)
المعاملات
| الاسم | النوع | مطلوب |
|---|---|---|
appKey
|
سلسلة نصية (string) | نعم |
component
|
ComponentProvider
|
نعم |
getAppKeys
static getAppKeys()
تُرجع مصفوفة من AppKeys.
getSectionKeys()
static getSectionKeys()
تُرجع مصفوفة من sectionKeys.
getSections()
static getSections()
تُرجع جميع كائنات Runnables، وهي كائنات يحتوي كلّ واحد منها على مفتاح (AppKey) وقيمة من نوع Runnable والتي تتكون من:
- مكوّن (
ComponentProvider). - دالة تشغيل (
run).
getRunnable()
static getRunnable(appKey)
تُرجع كائن من النوع Runnable، ويتكون من:
- مكون (
ComponentProvider). - دالة تشغيل (
run)
getRegistry()
static getRegistry()
تُرجع الكائن Registry والذي يحتوي على:
sectionsrunnables
setComponentProviderInstrumentationHook()
static setComponentProviderInstrumentationHook(hook)
المعاملات
| الاسم | النوع | مطلوب |
|---|---|---|
hook
|
دالة (function) | نعم |
يحتوي الخطاف (hook) على المكونات التالية:
componentمن النوعComponentProvider(مطلوب).ScopedPerformanceLoggerمن النوعIPerformanceLogger(مطلوب).
تُرجع الدالة hook مكوِّن React.
runApplication
static runApplication(appKey, appParameters)
تُحمِّل حزمة تشغيل التطبيق.
المعاملات
| الاسم | النوع | مطلوب |
|---|---|---|
appKey
|
سلسلة نصية (string) | نعم |
appParameters
|
any | نعم |
unmountApplicationComponentAtRootTag
static unmountApplicationComponentAtRootTag(rootTag)
توقِف التطبيق عندما يُزال مكوّن معيّن.
المعاملات
| الاسم | النوع | مطلوب |
|---|---|---|
rootTag
|
عدد (number) | نعم |
registerHeadlessTask()
static registerHeadlessTask(taskKey, taskProvider)
HeadlessTask هي شيفرة يتم تنفيذها بدون واجهة مستخدم. المعامل taskProvider يُرجع دالة تأخذ بيانات من الشيفرة الأصلية. وبعد تنفيذ الدالة يُرسل إشعار للشيفرة الأصلية وقد يُدمر سياق جافا سكريبت الحالي (JS context).
تُستعمل هذه الدالة لتشغيل بعض المهام في التطبيق أثناء عمله في الخلفية، لمزامنة البيانات أو التعامل مع الإشعارات الفورية أو تشغيل الموسيقى مثلًا.
المعاملات
| الاسم | النوع | مطلوب |
|---|---|---|
taskKey
|
سلسلة نصية (string) | نعم |
taskProvider
|
taskProvider
|
نعم |
- المعامل
TaskProviderهو دالة تُرجع الدالةTask. - الدالة
Taskتأخذ بيانات وسيطة (arugments) وتُرجعPromiseيتم استيفاؤه على أنهundefined.
registerCancellableHeadlessTask()
static registerCancellableHeadlessTask(taskKey, taskProvider, taskCancelProvider)
HeadlessTask هي شيفرة تُنفّد بدون واجهة مستخدِم، حيث يُرجع المعامل taskProvider دالةً تأخذ بيانات من الشيفرة الأصلية، وبعد تنفيذ الدالة يُرسِل إشعارًا للشيفرة الأصلية. وقد يُدمر سياق جافا سكريبت الحالي المعامل taskCancelProvider دالة تُرجع النوع void ولا تأخذ معاملات، وتُستدعى عندما يُرسل طلب الإلغاء.
المعاملات
| الاسم | النوع | مطلوب |
|---|---|---|
taskKey
|
سلسلة نصية (string) | نعم |
taskProvider
|
TaskProvider
|
نعم |
taskCancelProvider
|
TaskCancelProvider
|
نعم |
- المعامل
TaskProviderهو دالة تُرجع الدالةTask. - الدالة
Taskتأخذ بيانات مثل معاملات وتُرجعPromise. - الدالة
TaskCancelProviderتُرجعTaskCanceller. - الدالة
TaskCancellerلا تأخذ معاملات وتُرجع النوعvoid.
startHeadlessTask
static startHeadlessTask(taskId, taskKey, data)
تُستدعى من الشيفرة الأصلية، وتبدأ تنفيذ headless task.
المعامل taskId هو المُعرِّف الخاص بالمهمة المُراد بدؤها، والمعامل taskKey هو المفتاح الخاص بها، أمّا المعامل data فهو البيانات التي يجب إرسالها للمهمة المراد تنفيذها.
المعاملات
| الاسم | النوع | مطلوب |
|---|---|---|
taskId
|
عدد (number) | نعم |
taskKey
|
سلسلة نصية (string) | نعم |
data
|
any | نعم |
cancelHeadlessTask()
static cancelHeadlessTask(taskId, taskKey)
تُستدعى من الشيفرة الأصلية، وتلغي تنفيذ headless task.
المعامل taskId هو المُعرِّف الخاص بالمهمة المُراد الغاء تنفيذها (وهي المهمة التي بدأت عند استدعاء الدالة startHeadlessTask، والمعامل taskKey هو المفتاح الخاص بها.
المعاملات
| الاسم | النوع | مطلوب |
|---|---|---|
taskId
|
عدد (number) | نعم |
taskKey
|
سلسلة نصية (string) | نعم |
data
|
any | نعم |