الفرق بين المراجعتين لصفحة: «ReactNative/appregistry»

من موسوعة حسوب
ط مراجعة
طلا ملخص تعديل
 
(4 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:المكون AppRegistry في ReactNative}}</noinclude>
<noinclude>{{DISPLAYTITLE:الواجهة AppRegistry في ReactNative}}</noinclude><blockquote>'''ملاحظة''': إذا كنت تستخدم <code>expo-cli</code> فلا يوجد سوى مكوّن إدخال واحد مسجل مسبقًا في <code>AppRegistry</code> ويُتعامل معه تلقائيًا، لذلك فلا حاجة لاستخدام واجهة برمجة التطبيقات (API) هذه.</blockquote>
'''ملاحظة''': إذا كنت تستخدم <code>expo-cli</code> فلا يوجد سوى مكوّن إدخال واحد مسجل مسبقًا في <code>AppRegistry</code> ويُتعامل معه تلقائيًا، لذلك فلا حاجة لاستخدام واجهة برمجة التطبيقات (API) هذه.


يُمثل <code>AppRegistry</code> نقطة دخول [[JavaScript|جافا سكريبت]] لتشغيل جميع تطبيقات [[ReactNative|React Native]]. ويجب تسجيل جميع مكونات التطبيق الجذرية مع <code>AppRegistry.registerComponent</code>، ومن ثم يتمكن النظام الأصلي من تحميل التطبيق وتشغيله عن طريق استدعاء الدالة <code>AppRegistry.runApplication</code>.<syntaxhighlight class="react" lang="javascript">import { Text, AppRegistry } from 'react-native';
تمثل الواجهة <code>AppRegistry</code> نقطة دخول [[JavaScript|جافاسكربت]] لتشغيل جميع تطبيقات [[ReactNative|React Native]]. ويجب تسجيل جميع مكونات التطبيق الجذرية مع <code>AppRegistry.registerComponent</code>، ومن ثم يتمكن النظام الأصلي من تحميل التطبيق وتشغيله عن طريق استدعاء الدالة <code>AppRegistry.runApplication</code>.<syntaxhighlight class="react" lang="javascript">import { Text, AppRegistry } from 'react-native';


const App = (props) => (
const App = (props) => (
سطر 12: سطر 11:
AppRegistry.registerComponent('Appname', () => App);</syntaxhighlight>
AppRegistry.registerComponent('Appname', () => App);</syntaxhighlight>


لإيقاف التطبيق عند ازالة واجهة معيّنة (<code>[[ReactNative/view|View]]</code>)، استدعي الدالة <code>AppRegistry.unmountApplicationComponenetAtRootTag</code> على الوسم الذي مُرّرت سابقًا للدالة <code>runApplication</code>.
لإيقاف التطبيق عند ازالة واجهة معيّنة <code>[[ReactNative/view|View]]</code>، استدعي الدالة <code>AppRegistry.unmountApplicationComponenetAtRootTag</code> على الوسم الذي مُرّرت سابقًا للدالة <code>runApplication</code>.


يجب أن يكون <code>AppRegistry</code> مطلوبًا في بداية سلسلة المطلوبات للتأكد من إعداد بيئة التنفيذ الصحيح قبل أن تكون هناك حاجة لوحدات أخرى.
يجب أن يكون <code>AppRegistry</code> مطلوبًا في بداية سلسلة المطلوبات <code>require</code> للتأكد من إعداد بيئة التنفيذ إعدادًا صحيحًا قبل أن تكون هناك حاجة لوحدات أخرى.


__toc__
__toc__


== الدوال ==
== التوابع ==


=== <code>setWrapperComponentProvider</code> ===
=== <code>‎cancelHeadlessTask()‎</code> ===
<syntaxhighlight class="" lang="javascript">static cancelHeadlessTask(taskId, taskKey)</syntaxhighlight>
تُستدعى من الشيفرة الأصلية، وتلغي تنفيذ عملية خلفية بلا واجهة (headless task).
 
المعامل <code>taskId</code> هو المُعرِّف الخاص بالمهمة المُراد إلغاء تنفيذها (وهي المهمة التي بدأت عند استدعاء الدالة <code>startHeadlessTask</code>، والمعامل <code>taskKey</code> هو المفتاح الخاص بها.


<syntaxhighlight class="react" lang="javascript">static setWrapperComponenetProvider(provider)</syntaxhighlight>
'''المعاملات'''  
'''المعاملات'''


{| class="wikitable"
{| class="wikitable"
سطر 30: سطر 32:
! مطلوب
! مطلوب
|-
|-
| <code>provider</code>
|<code>taskId</code>
| [[ReactNative/components and apis|<code>ComponentProvider</code>]]
| عدد (number)
| نعم
|-
|<code>taskKey</code>
| سلسلة نصية (string)
| نعم
|-
|<code>data</code>
| any
| نعم
| نعم
|}
|}


=== <code>enableArchitectureIndicator</code> ===
===<code>enableArchitectureIndicator()‎</code>===


<syntaxhighlight class="react" lang="javascript">static enableArchitectureIndicator(enabled)</syntaxhighlight>
<syntaxhighlight class="react" lang="javascript">static enableArchitectureIndicator(enabled)</syntaxhighlight>
سطر 45: سطر 55:
! مطلوب
! مطلوب
|-
|-
| <code>enabled</code>
|<code>enabled</code>
| قيمة منطقية (boolean)
| قيمة منطقية (boolean)
| نعم
| نعم
|}
|}
=== <code>registerConfig</code> ===


<syntaxhighlight class="react" lang="javascript">static registerConfig([config])</syntaxhighlight>
=== <code>getAppKeys()‎</code> ===
<syntaxhighlight class="react" lang="javascript">static getAppKeys()</syntaxhighlight>
تُرجع مصفوفة من <code>AppKeys</code>.
===<code>‎getSectionKeys()‎</code>===
 
<syntaxhighlight class="react" lang="javascript">static getSectionKeys()</syntaxhighlight>
تُرجع مصفوفة من سلاسل نصية.
===<code>‎getSections()‎</code>===
 
<syntaxhighlight class="react" lang="javascript">static getSections()</syntaxhighlight>
تُرجع كائنًا من النوع <code>Runnables</code>.
 
===<code>‎getRunnable()‎</code>===
 
<syntaxhighlight class="react" lang="javascript">static getRunnable(appKey)</syntaxhighlight>
تُرجع كائنًا من النوع <code>Runnable</code>.
 
===<code>‎getRegistry()‎</code>===
 
<syntaxhighlight class="react" lang="javascript">static getRegistry()</syntaxhighlight>
تُرجع كائنًا من النوع <code>Registry</code> (انظر تعريفات النوع في الأسفل).
 
=== <code>‎registerCancellableHeadlessTask()‎</code> ===
<syntaxhighlight class="react" lang="javascript">static registerCancellableHeadlessTask(taskKey, taskProvider, taskCancelProvider)</syntaxhighlight>
تسجل عملية في الخلفية بلا واجهة (تدعى headless task) قابلة للإلغاء، وتلك العملية هي شيفرة تُنفّد بدون واجهة مستخدِم، حيث يعد المعامل <code>taskKey</code> المفتاح المرتبط بتلك العملية ويعد المعامل <code>taskProvider</code> و<nowiki/>[[JavaScript/Promise|عدًا]] (promise) يُرجع دالة تأخذ بيانات من الطرف الأصيل من الهاتف (native side) على أنه الوسيط الوحيد. وبعد أن [[JavaScript/Promise/reject|يرفض الوعد]] أو [[JavaScript/Promise/resolve|يُحَل]]، يُرسل إشعار للجانب الأصيل وقد يقرر تدمير سياق جافاسكربت الحالي (JS context). أما المعامل <code>taskCancelProvider</code> فهو دالة تُرجع دالة لا تأخذ معاملات، يغلفها <code>taskProvider</code> ثم يعيدها مباشرةً عندما يُرسل طلب الإلغاء وذلك لتنفيذها.
 
 
 
'''المعاملات'''
 
{| class="wikitable"
{| class="wikitable"
! الاسم
! الاسم
سطر 57: سطر 95:
! مطلوب
! مطلوب
|-
|-
| <code>config</code>
|<code>taskKey</code>
| AppConfig
| سلسلة نصية (string)
| نعم
|-
|<code>taskProvider</code>
|<code>TaskProvider</code>
| نعم
|-
|<code>taskCancelProvider</code>
|<code>TaskCancelProvider</code>
| نعم
| نعم
|}
|}
===<code>registerConfig()‎</code>===


'''المفاتيح الصالحة للاستخدام مع <code>AppConfig</code>'''
<syntaxhighlight class="react" lang="javascript">static registerConfig([config])</syntaxhighlight>'''المعاملات'''
 
{| class="wikitable"
{| class="wikitable"
! الاسم
! الاسم
سطر 69: سطر 115:
! مطلوب
! مطلوب
|-
|-
| <code>appKey</code>
|<code>config</code>
| سلسلة نصية (string)
|<code>AppConfig</code>
| نعم
| نعم
|-
| <code>component</code>
| ComponentProvider
| لا
|-
| <code>run</code>
| دالة (function)
| لا
|-
| <code>section</code>
| قيمة منطقية (bool)
| لا
|}
|}


=== <code>‎registerComponent()‎</code> ===
===<code>‎registerComponent()‎</code>===


<syntaxhighlight class="react" lang="javascript">static registerComponent(appKey, componentProvider, section?)</syntaxhighlight>
<syntaxhighlight class="react" lang="javascript">static registerComponent(appKey, componentProvider, section?)</syntaxhighlight>
سطر 96: سطر 130:
! مطلوب
! مطلوب
|-
|-
| <code>appKey</code>
|<code>appKey</code>
| سلسلة نصية (string)
| سلسلة نصية (string)
| نعم
| نعم
|-
|-
| <code>componenetProvider</code>
|<code>componenetProvider</code>
| <code>[[ReactNative/components and apis|ComponentProvider]]</code>
|<code>[[ReactNative/components and apis|ComponentProvider]]</code>
| نعم
| نعم
|-
|-
| <code>section</code>
|<code>section</code>
| قيمة منطقية (bool)
| قيمة منطقية (bool)
| لا
| لا
|}
|}


=== <code>‎registerRunnable()‎</code> ===
=== <code>‎registerHeadlessTask()‎</code> ===
<syntaxhighlight class="react" lang="javascript">static registerHeadlessTask(taskKey, taskProvider)</syntaxhighlight>
تسجل عملية في الخلفية بلا واجهة (تدعى headless task) هي شيفرة تُنفَّذ دون واجهة مستخدم. يعد المعامل <code>taskKey</code> المفتاح المرتبط بتلك العملية، ويعد المعامل <code>taskProvider</code> و<nowiki/>[[JavaScript/Promise|عدًا]] (promise) يُرجع دالة تأخذ بيانات من الطرف الأصيل من الهاتف (native side) على أنه الوسيط الوحيد. وبعد أن [[JavaScript/Promise/reject|يرفض الوعد]] أو [[JavaScript/Promise/resolve|يُحَل]]، يُرسل إشعار للجانب الأصيل وقد يقرر تدمير سياق جافاسكريبت الحالي (JS context).
 
 
 
تُستعمل هذه الدالة لتشغيل بعض المهام في التطبيق أثناء عمله في الخلفية، لمزامنة البيانات أو التعامل مع الإشعارات الفورية أو تشغيل الموسيقى مثلًا.


<syntaxhighlight class="react" lang="javascript">static registerRunnable(appKey, run)</syntaxhighlight>
'''المعاملات'''
'''المعاملات'''


سطر 119: سطر 158:
! مطلوب
! مطلوب
|-
|-
| <code>appKey</code>
|<code>taskKey</code>
| سلسلة نصية (string)
| سلسلة نصية (string)
| نعم
| نعم
|-
|-
| <code>run</code>
|<code>taskProvider</code>
| دالة (function)
|<code>TaskProvider</code>
| نعم
| نعم
|}
|}
=== <code>registerSection</code> ===


<syntaxhighlight class="react" lang="javascript">static registerSection(appKey, component)</syntaxhighlight>
===<code>‎registerRunnable()‎</code>===
'''المعاملات'''
 
<syntaxhighlight class="react" lang="javascript">static registerRunnable(appKey, run)</syntaxhighlight>
'''المعاملات:'''


{| class="wikitable"
{| class="wikitable"
سطر 137: سطر 177:
! مطلوب
! مطلوب
|-
|-
| <code>appKey</code>
|<code>appKey</code>
| سلسلة نصية (string)
| سلسلة نصية (string)
| نعم
| نعم
|-
|-
| <code>component</code>
|<code>run</code>
| <code>[[ReactNative/components and apis|ComponentProvider]]</code>
| دالة (function)
| نعم
| نعم
|}
|}
=== <code>getAppKeys</code> ===
===<code>registerSection()‎</code>===


<syntaxhighlight class="react" lang="javascript">static getAppKeys()</syntaxhighlight>
<syntaxhighlight class="react" lang="javascript">static registerSection(appKey, component)</syntaxhighlight>
تُرجع مصفوفة من <code>AppKeys</code>.
'''المعاملات:'''
=== <code>‎getSectionKeys()‎</code> ===
 
<syntaxhighlight class="react" lang="javascript">static getSectionKeys()</syntaxhighlight>
تُرجع مصفوفة من <code>sectionKeys</code>.
=== <code>‎getSections()‎</code> ===
 
<syntaxhighlight class="react" lang="javascript">static getSections()</syntaxhighlight>
تُرجع جميع كائنات <code>Runnables</code>، وهي كائنات يحتوي كلّ واحد منها على مفتاح (AppKey) وقيمة من نوع <code>Runnable</code> والتي تتكون من:
 
* مكوّن (<code>ComponentProvider</code>).
* دالة تشغيل (<code>run</code>).
 
=== <code>‎getRunnable()‎</code> ===
 
<syntaxhighlight class="react" lang="javascript">static getRunnable(appKey)</syntaxhighlight>
تُرجع كائن من النوع <code>Runnable</code>، ويتكون من:
 
* مكون (<code>ComponentProvider</code>).
* دالة تشغيل (<code>run</code>)
 
=== <code>‎getRegistry()‎</code> ===
 
<syntaxhighlight class="react" lang="javascript">static getRegistry()</syntaxhighlight>
تُرجع الكائن <code>Registry</code> والذي يحتوي على:
 
* <code>sections</code>
* <code>runnables</code>
 
=== <code>‎setComponentProviderInstrumentationHook()‎</code> ===
 
<syntaxhighlight class="react" lang="javascript">static setComponentProviderInstrumentationHook(hook)</syntaxhighlight>
'''المعاملات'''


{| class="wikitable"
{| class="wikitable"
سطر 187: سطر 195:
! مطلوب
! مطلوب
|-
|-
| <code>hook</code>
|<code>appKey</code>
| دالة (function)
| سلسلة نصية (string)
| نعم
|-
|<code>component</code>
|<code>[[ReactNative/components and apis|ComponentProvider]]</code>
| نعم
| نعم
|}
|}
 
===<code>runApplication()‎</code>===
يحتوي الخطاف (hook) على المكونات التالية:
 
* <code>component</code> من النوع <code>ComponentProvider</code> (مطلوب).
* <code>ScopedPerformanceLogger</code>من النوع <code>IPerformanceLogger</code> (مطلوب).
 
تُرجع الدالة <code>hook</code> مكوِّن <code>[[React]]</code>.
=== <code>runApplication</code> ===


<syntaxhighlight class="react" lang="javascript">static runApplication(appKey, appParameters)</syntaxhighlight>
<syntaxhighlight class="react" lang="javascript">static runApplication(appKey, appParameters)</syntaxhighlight>
تُحمِّل حزمة تشغيل التطبيق.
تُحمِّل حزمة تشغيل [[JavaScript|جافاسكربت]] للتطبيق ثم تشغِّله.


'''المعاملات'''
'''المعاملات'''
سطر 210: سطر 215:
! مطلوب
! مطلوب
|-
|-
| <code>appKey</code>
|<code>appKey</code>
| سلسلة نصية (string)
| سلسلة نصية (string)
| نعم
| نعم
|-
|-
| <code>appParameters</code>
|<code>appParameters</code>
| any
| any
| نعم
| نعم
|}
|}
=== <code>unmountApplicationComponentAtRootTag</code> ===
===<code>‎setComponentProviderInstrumentationHook()‎</code>===


<syntaxhighlight class="react" lang="javascript">static unmountApplicationComponentAtRootTag(rootTag)</syntaxhighlight>
<syntaxhighlight class="react" lang="javascript">static setComponentProviderInstrumentationHook(hook)</syntaxhighlight>
توقِف التطبيق عندما يُزال مكوّن معيّن.
'''المعاملات:'''
 
'''المعاملات'''


{| class="wikitable"
{| class="wikitable"
سطر 230: سطر 233:
! مطلوب
! مطلوب
|-
|-
| <code>rootTag</code>
|<code>hook</code>
| عدد (number)
| دالة (function)
| نعم
| نعم
|}
|}


=== <code>‎registerHeadlessTask()‎</code> ===
يحتوي الخطاف <code>hook</code> على المكونات التالية:


<syntaxhighlight class="react" lang="javascript">static registerHeadlessTask(taskKey, taskProvider)</syntaxhighlight>
*<code>component</code> من النوع <code>ComponentProvider</code> (مطلوب).
<code>HeadlessTask</code> هي شيفرة يتم تنفيذها بدون واجهة مستخدم. المعامل <code>taskProvider</code> يُرجع دالة تأخذ بيانات من الشيفرة الأصلية. وبعد تنفيذ الدالة يُرسل إشعار للشيفرة الأصلية وقد يُدمر سياق جافا سكريبت الحالي (JS context).
*<code>ScopedPerformanceLogger</code>من النوع <code>IPerformanceLogger</code> (مطلوب).


تُستعمل هذه الدالة لتشغيل بعض المهام في التطبيق أثناء عمله في الخلفية، لمزامنة البيانات أو التعامل مع الإشعارات الفورية أو تشغيل الموسيقى مثلًا.
تُرجع الدالة <code>hook</code> مكوِّن <code>[[React]]</code>.


=== <code>setWrapperComponentProvider()‎</code> ===
<syntaxhighlight class="react" lang="javascript">static setWrapperComponenetProvider(provider)</syntaxhighlight>
'''المعاملات'''
'''المعاملات'''


سطر 249: سطر 254:
! مطلوب
! مطلوب
|-
|-
| <code>taskKey</code>
| <code>provider</code>
| سلسلة نصية (string)
| [[ReactNative/components and apis|<code>ComponentProvider</code>]]
| نعم
|-
| <code>taskProvider</code>
| <code>taskProvider</code>
| نعم
| نعم
|}
|}
=== <code>startHeadlessTask()‎</code> ===


* المعامل <code>TaskProvider</code> هو دالة تُرجع الدالة <code>Task</code>.
<syntaxhighlight class="react" lang="javascript">static startHeadlessTask(taskId, taskKey, data)</syntaxhighlight>
* الدالة <code>Task</code> تأخذ بيانات وسيطة (arugments) وتُرجع <code>Promise</code> يتم استيفاؤه على أنه <code>undefined</code>.  
تُستدعى من الشيفرة الأصلية (native code)، وتبدأ تنفيذ <code>headless task</code>.


=== <code>‎registerCancellableHeadlessTask()‎</code> ===
المعامل <code>taskId</code> هو المُعرِّف الخاص بالمهمة المُراد بدؤها، والمعامل <code>taskKey</code> هو المفتاح الخاص بها، أمّا المعامل <code>data</code> فهو البيانات التي يجب إرسالها للمهمة المراد تنفيذها.


<syntaxhighlight class="react" lang="javascript">static registerCancellableHeadlessTask(taskKey, taskProvider, taskCancelProvider)</syntaxhighlight>
'''المعاملات:'''
<code>HeadlessTask</code> هي شيفرة تُنفّد بدون واجهة مستخدِم، حيث يُرجع المعامل <code>taskProvider</code> دالةً تأخذ بيانات من الشيفرة الأصلية، وبعد تنفيذ الدالة يُرسِل إشعارًا للشيفرة الأصلية. وقد يُدمر سياق جافا سكريبت الحالي المعامل <code>taskCancelProvider</code> دالة تُرجع النوع <code>void</code> ولا تأخذ معاملات، وتُستدعى عندما يُرسل طلب الإلغاء.
 
'''المعاملات'''


{| class="wikitable"
{| class="wikitable"
سطر 272: سطر 271:
! النوع
! النوع
! مطلوب
! مطلوب
|-
| <code>taskId</code>
| عدد (number)
| نعم
|-
|-
| <code>taskKey</code>
| <code>taskKey</code>
سطر 277: سطر 280:
| نعم
| نعم
|-
|-
| <code>taskProvider</code>
| <code>data</code>
| <code>TaskProvider</code>
| any
| نعم
|-
| <code>taskCancelProvider</code>
| <code>TaskCancelProvider</code>
| نعم
| نعم
|}
|}
=== <code>unmountApplicationComponentAtRootTag()‎</code> ===


* المعامل <code>TaskProvider</code> هو دالة تُرجع الدالة <code>Task</code>.
<syntaxhighlight class="react" lang="javascript">static unmountApplicationComponentAtRootTag(rootTag)</syntaxhighlight>
* الدالة <code>Task</code> تأخذ بيانات مثل معاملات وتُرجع <code>Promise</code>.
توقِف التطبيق عند وجوب تدمير واجهة معينة.
* الدالة <code>TaskCancelProvider</code> تُرجع <code>TaskCanceller</code>.
* الدالة <code>TaskCanceller</code> لا تأخذ معاملات وتُرجع النوع <code>void</code>.
=== <code>startHeadlessTask</code> ===
 
<syntaxhighlight class="react" lang="javascript">static startHeadlessTask(taskId, taskKey, data)</syntaxhighlight>
تُستدعى من الشيفرة الأصلية، وتبدأ تنفيذ <code>headless task</code>.


المعامل <code>taskId</code> هو المُعرِّف الخاص بالمهمة المُراد بدؤها، والمعامل <code>taskKey</code> هو المفتاح الخاص بها، أمّا المعامل <code>data</code> فهو البيانات التي يجب إرسالها للمهمة المراد تنفيذها.
'''المعاملات:'''
 
'''المعاملات'''


{| class="wikitable"
{| class="wikitable"
سطر 304: سطر 296:
! مطلوب
! مطلوب
|-
|-
| <code>taskId</code>
| <code>rootTag</code>
| عدد (number)
| عدد (number)
| نعم
| نعم
|}
== تعريفات الواجهة ==
=== <code>AppConfig</code> ===
كائنٌ يمثل ضبط التطبيق للتابع <code>registerConfig</code>.
المفاتيح (الخاصيات) الصالحة للاستخدام مع الكائن <code>AppConfig</code>:
{| class="wikitable"
! الاسم
! النوع
! مطلوب
|-
|-
| <code>taskKey</code>
|<code>appKey</code>
| سلسلة نصية (string)
| سلسلة نصية (string)
| نعم
| نعم
|-
|-
| <code>data</code>
|<code>component</code>
| any
|<code>ComponentProvider</code>
| نعم
| لا
|-
|<code>run</code>
| دالة (function)
| لا
|-
|<code>section</code>
| قيمة منطقية (bool)
| لا
|}
|}
'''ملاحظة''': يُتوقع من كل كائن ضبط أن يحوي إما <code>component</code> أو <code>run</code>.


=== <code>‎cancelHeadlessTask()‎</code> ===
=== <code>Registry</code> ===
 
كائن والذي يحتوي على الخاصيات التالية:
<syntaxhighlight class="" lang="javascript">static cancelHeadlessTask(taskId, taskKey)</syntaxhighlight>
{| class="wikitable"
تُستدعى من الشيفرة الأصلية، وتلغي تنفيذ <code>headless task</code>.
! الاسم
 
! النوع
المعامل <code>taskId</code> هو المُعرِّف الخاص بالمهمة المُراد الغاء تنفيذها (وهي المهمة التي بدأت عند استدعاء الدالة <code>startHeadlessTask</code>، والمعامل <code>taskKey</code> هو المفتاح الخاص بها.
|-
 
|<code>runnables</code>
'''المعاملات'''
| مصفوفة من النوع Runnables
|-
|<code>sections</code>
| مصفوفة من سلاسل نصية
|}


=== <code>Runnable</code> ===
كائن والذي يحتوي على الخاصيات التالية:
{| class="wikitable"
{| class="wikitable"
! الاسم
! الاسم
! النوع
! النوع
! مطلوب
|-
| <code>taskId</code>
| عدد (number)
| نعم
|-
|-
| <code>taskKey</code>
|<code>component</code>
| سلسلة نصية (string)
| النوع <code>ComponentProvider</code>
| نعم
|-
|-
| <code>data</code>
|<code>run</code>
| any
| دالة
| نعم
|}
|}
=== <code>Runnables</code> ===
كائن يحتوي على مفتاح <code>appKey</code> وقيمة من نوع <code>Runnable</code>.
=== <code>Task</code> ===
الدالة <code>Task</code> تأخذ بيانات وسيطة وتُرجع وعدًا <code>[[JavaScript/Promise|Promise]]</code> يتم استيفاؤه (قبوله أو حله) على أنه <code>undefined</code>.
=== <code>TaskCanceller</code> ===
الدالة <code>TaskCanceller</code> لا تأخذ معاملات ولا ترجع شيئًا.
=== <code>TaskCancelProvider</code> ===
الدالة <code>TaskCancelProvider</code> هي دالة صالحة ترجع الدالة <code>TaskCanceller</code>.
=== <code>TaskProvider</code> ===
يعد <code>TaskProvider</code> دالة تُرجع الدالة <code>Task</code>.


== المصادر ==
== المصادر ==
سطر 348: سطر 375:
[https://reactnative.dev/docs/appregistry صفحة AppRegistry في توثيق React Native الرسمي].
[https://reactnative.dev/docs/appregistry صفحة AppRegistry في توثيق React Native الرسمي].
[[تصنيف: ReactNative]]
[[تصنيف: ReactNative]]
[[تصنيف:React Native API]]

المراجعة الحالية بتاريخ 14:12، 9 أكتوبر 2021

ملاحظة: إذا كنت تستخدم 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 مطلوبًا في بداية سلسلة المطلوبات require للتأكد من إعداد بيئة التنفيذ إعدادًا صحيحًا قبل أن تكون هناك حاجة لوحدات أخرى.

التوابع

‎cancelHeadlessTask()‎

static cancelHeadlessTask(taskId, taskKey)

تُستدعى من الشيفرة الأصلية، وتلغي تنفيذ عملية خلفية بلا واجهة (headless task).

المعامل taskId هو المُعرِّف الخاص بالمهمة المُراد إلغاء تنفيذها (وهي المهمة التي بدأت عند استدعاء الدالة startHeadlessTask، والمعامل taskKey هو المفتاح الخاص بها.

المعاملات

الاسم النوع مطلوب
taskId عدد (number) نعم
taskKey سلسلة نصية (string) نعم
data any نعم

enableArchitectureIndicator()‎

static enableArchitectureIndicator(enabled)

المعاملات

الاسم النوع مطلوب
enabled قيمة منطقية (boolean) نعم

getAppKeys()‎

static getAppKeys()

تُرجع مصفوفة من AppKeys.

‎getSectionKeys()‎

static getSectionKeys()

تُرجع مصفوفة من سلاسل نصية.

‎getSections()‎

static getSections()

تُرجع كائنًا من النوع Runnables.

‎getRunnable()‎

static getRunnable(appKey)

تُرجع كائنًا من النوع Runnable.

‎getRegistry()‎

static getRegistry()

تُرجع كائنًا من النوع Registry (انظر تعريفات النوع في الأسفل).

‎registerCancellableHeadlessTask()‎

static registerCancellableHeadlessTask(taskKey, taskProvider, taskCancelProvider)

تسجل عملية في الخلفية بلا واجهة (تدعى headless task) قابلة للإلغاء، وتلك العملية هي شيفرة تُنفّد بدون واجهة مستخدِم، حيث يعد المعامل taskKey المفتاح المرتبط بتلك العملية ويعد المعامل taskProvider وعدًا (promise) يُرجع دالة تأخذ بيانات من الطرف الأصيل من الهاتف (native side) على أنه الوسيط الوحيد. وبعد أن يرفض الوعد أو يُحَل، يُرسل إشعار للجانب الأصيل وقد يقرر تدمير سياق جافاسكربت الحالي (JS context). أما المعامل taskCancelProvider فهو دالة تُرجع دالة لا تأخذ معاملات، يغلفها taskProvider ثم يعيدها مباشرةً عندما يُرسل طلب الإلغاء وذلك لتنفيذها.


المعاملات

الاسم النوع مطلوب
taskKey سلسلة نصية (string) نعم
taskProvider TaskProvider نعم
taskCancelProvider TaskCancelProvider نعم

registerConfig()‎

static registerConfig([config])

المعاملات

الاسم النوع مطلوب
config AppConfig نعم

‎registerComponent()‎

static registerComponent(appKey, componentProvider, section?)

المعاملات

الاسم النوع مطلوب
appKey سلسلة نصية (string) نعم
componenetProvider ComponentProvider نعم
section قيمة منطقية (bool) لا

‎registerHeadlessTask()‎

static registerHeadlessTask(taskKey, taskProvider)

تسجل عملية في الخلفية بلا واجهة (تدعى headless task) هي شيفرة تُنفَّذ دون واجهة مستخدم. يعد المعامل taskKey المفتاح المرتبط بتلك العملية، ويعد المعامل taskProvider وعدًا (promise) يُرجع دالة تأخذ بيانات من الطرف الأصيل من الهاتف (native side) على أنه الوسيط الوحيد. وبعد أن يرفض الوعد أو يُحَل، يُرسل إشعار للجانب الأصيل وقد يقرر تدمير سياق جافاسكريبت الحالي (JS context).


تُستعمل هذه الدالة لتشغيل بعض المهام في التطبيق أثناء عمله في الخلفية، لمزامنة البيانات أو التعامل مع الإشعارات الفورية أو تشغيل الموسيقى مثلًا.

المعاملات

الاسم النوع مطلوب
taskKey سلسلة نصية (string) نعم
taskProvider TaskProvider نعم

‎registerRunnable()‎

static registerRunnable(appKey, run)

المعاملات:

الاسم النوع مطلوب
appKey سلسلة نصية (string) نعم
run دالة (function) نعم

registerSection()‎

static registerSection(appKey, component)

المعاملات:

الاسم النوع مطلوب
appKey سلسلة نصية (string) نعم
component ComponentProvider نعم

runApplication()‎

static runApplication(appKey, appParameters)

تُحمِّل حزمة تشغيل جافاسكربت للتطبيق ثم تشغِّله.

المعاملات

الاسم النوع مطلوب
appKey سلسلة نصية (string) نعم
appParameters any نعم

‎setComponentProviderInstrumentationHook()‎

static setComponentProviderInstrumentationHook(hook)

المعاملات:

الاسم النوع مطلوب
hook دالة (function) نعم

يحتوي الخطاف hook على المكونات التالية:

  • component من النوع ComponentProvider (مطلوب).
  • ScopedPerformanceLoggerمن النوع IPerformanceLogger (مطلوب).

تُرجع الدالة hook مكوِّن React.

setWrapperComponentProvider()‎

static setWrapperComponenetProvider(provider)

المعاملات

الاسم النوع مطلوب
provider ComponentProvider نعم

startHeadlessTask()‎

static startHeadlessTask(taskId, taskKey, data)

تُستدعى من الشيفرة الأصلية (native code)، وتبدأ تنفيذ headless task.

المعامل taskId هو المُعرِّف الخاص بالمهمة المُراد بدؤها، والمعامل taskKey هو المفتاح الخاص بها، أمّا المعامل data فهو البيانات التي يجب إرسالها للمهمة المراد تنفيذها.

المعاملات:

الاسم النوع مطلوب
taskId عدد (number) نعم
taskKey سلسلة نصية (string) نعم
data any نعم

unmountApplicationComponentAtRootTag()‎

static unmountApplicationComponentAtRootTag(rootTag)

توقِف التطبيق عند وجوب تدمير واجهة معينة.

المعاملات:

الاسم النوع مطلوب
rootTag عدد (number) نعم

تعريفات الواجهة

AppConfig

كائنٌ يمثل ضبط التطبيق للتابع registerConfig.

المفاتيح (الخاصيات) الصالحة للاستخدام مع الكائن AppConfig:

الاسم النوع مطلوب
appKey سلسلة نصية (string) نعم
component ComponentProvider لا
run دالة (function) لا
section قيمة منطقية (bool) لا

ملاحظة: يُتوقع من كل كائن ضبط أن يحوي إما component أو run.

Registry

كائن والذي يحتوي على الخاصيات التالية:

الاسم النوع
runnables مصفوفة من النوع Runnables
sections مصفوفة من سلاسل نصية

Runnable

كائن والذي يحتوي على الخاصيات التالية:

الاسم النوع
component النوع ComponentProvider
run دالة

Runnables

كائن يحتوي على مفتاح appKey وقيمة من نوع Runnable.

Task

الدالة Task تأخذ بيانات وسيطة وتُرجع وعدًا Promise يتم استيفاؤه (قبوله أو حله) على أنه undefined.

TaskCanceller

الدالة TaskCanceller لا تأخذ معاملات ولا ترجع شيئًا.

TaskCancelProvider

الدالة TaskCancelProvider هي دالة صالحة ترجع الدالة TaskCanceller.

TaskProvider

يعد TaskProvider دالة تُرجع الدالة Task.

المصادر

صفحة AppRegistry في توثيق React Native الرسمي.