الفرق بين المراجعتين لصفحة: «ReactNative/appregistry»
رقية-بورية (نقاش | مساهمات) ط مراجعة |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتصحيح الترجمة |
||
| سطر 14: | سطر 14: | ||
لإيقاف التطبيق عند ازالة واجهة معيّنة (<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__ | ||
| سطر 51: | سطر 51: | ||
=== <code>registerConfig</code> === | === <code>registerConfig</code> === | ||
<syntaxhighlight class="react" lang="javascript">static registerConfig([config])</syntaxhighlight> | <syntaxhighlight class="react" lang="javascript">static registerConfig([config])</syntaxhighlight>'''المعاملات''' | ||
{| class="wikitable" | {| class="wikitable" | ||
! الاسم | ! الاسم | ||
| سطر 62: | سطر 62: | ||
|} | |} | ||
المفاتيح الصالحة للاستخدام مع <code>AppConfig</code>: | |||
{| class="wikitable" | {| class="wikitable" | ||
| سطر 164: | سطر 164: | ||
<syntaxhighlight class="react" lang="javascript">static getRunnable(appKey)</syntaxhighlight> | <syntaxhighlight class="react" lang="javascript">static getRunnable(appKey)</syntaxhighlight> | ||
تُرجع | تُرجع كائنًا من النوع <code>Runnable</code>، ويتكون من: | ||
* مكون (<code>ComponentProvider</code>). | * مكون (<code>ComponentProvider</code>). | ||
| سطر 174: | سطر 174: | ||
تُرجع الكائن <code>Registry</code> والذي يحتوي على: | تُرجع الكائن <code>Registry</code> والذي يحتوي على: | ||
* <code>sections</code> | * <code>sections</code> (مصفوفة من سلاسل نصية) | ||
* <code>runnables</code> | * <code>runnables</code> (دوال قابلة للتشغيل [Runnables]) | ||
=== <code>setComponentProviderInstrumentationHook()</code> === | === <code>setComponentProviderInstrumentationHook()</code> === | ||
| سطر 192: | سطر 192: | ||
|} | |} | ||
يحتوي الخطاف | يحتوي الخطاف <code>hook</code> على المكونات التالية: | ||
* <code>component</code> من النوع <code>ComponentProvider</code> (مطلوب). | * <code>component</code> من النوع <code>ComponentProvider</code> (مطلوب). | ||
| سطر 201: | سطر 201: | ||
<syntaxhighlight class="react" lang="javascript">static runApplication(appKey, appParameters)</syntaxhighlight> | <syntaxhighlight class="react" lang="javascript">static runApplication(appKey, appParameters)</syntaxhighlight> | ||
تُحمِّل حزمة تشغيل | تُحمِّل حزمة تشغيل [[JavaScript|جافاسكربت]] للتطبيق ثم تشغِّله. | ||
'''المعاملات''' | '''المعاملات''' | ||
| سطر 221: | سطر 221: | ||
<syntaxhighlight class="react" lang="javascript">static unmountApplicationComponentAtRootTag(rootTag)</syntaxhighlight> | <syntaxhighlight class="react" lang="javascript">static unmountApplicationComponentAtRootTag(rootTag)</syntaxhighlight> | ||
توقِف التطبيق | توقِف التطبيق عند وجوب تدمير واجهة معينة. | ||
'''المعاملات''' | '''المعاملات''' | ||
| سطر 238: | سطر 238: | ||
<syntaxhighlight class="react" lang="javascript">static registerHeadlessTask(taskKey, taskProvider)</syntaxhighlight> | <syntaxhighlight class="react" lang="javascript">static registerHeadlessTask(taskKey, taskProvider)</syntaxhighlight> | ||
<code> | تسجل عملية في الخلفية بلا واجهة (تدعى headless task) هي شيفرة تُنفَّذ دون واجهة مستخدم. يعد المعامل <code>taskKey</code> المفتاح المرتبط بتلك العملية، ويعد المعامل <code>taskProvider</code> و<nowiki/>[[JavaScript/Promise|عدًا]] (promise) يُرجع دالة تأخذ بيانات من الطرف الأصيل من الهاتف (native side) على أنه الوسيط الوحيد. وبعد أن [[JavaScript/Promise/reject|يرفض الوعد]] أو [[JavaScript/Promise/resolve|يُحَل]]، يُرسل إشعار للجانب الأصيل وقد يقرر تدمير سياق جافاسكريبت الحالي (JS context). | ||
تُستعمل هذه الدالة لتشغيل بعض المهام في التطبيق أثناء عمله في الخلفية، لمزامنة البيانات أو التعامل مع الإشعارات الفورية أو تشغيل الموسيقى مثلًا. | تُستعمل هذه الدالة لتشغيل بعض المهام في التطبيق أثناء عمله في الخلفية، لمزامنة البيانات أو التعامل مع الإشعارات الفورية أو تشغيل الموسيقى مثلًا. | ||
| سطر 254: | سطر 254: | ||
|- | |- | ||
| <code>taskProvider</code> | | <code>taskProvider</code> | ||
| <code> | | <code>TaskProvider</code> | ||
| نعم | | نعم | ||
|} | |} | ||
* | * يعد <code>TaskProvider</code> المطلوب دالة تُرجع الدالة <code>Task</code>. | ||
* الدالة <code>Task</code> تأخذ بيانات وسيطة | * الدالة <code>Task</code> تأخذ بيانات وسيطة وتُرجع وعدًا <code>[[JavaScript/Promise|Promise]]</code> يتم استيفاؤه (قبوله أو حله) على أنه <code>undefined</code>. | ||
=== <code>registerCancellableHeadlessTask()</code> === | === <code>registerCancellableHeadlessTask()</code> === | ||
<syntaxhighlight class="react" lang="javascript">static registerCancellableHeadlessTask(taskKey, taskProvider, taskCancelProvider)</syntaxhighlight> | <syntaxhighlight class="react" lang="javascript">static registerCancellableHeadlessTask(taskKey, taskProvider, taskCancelProvider)</syntaxhighlight> | ||
<code> | تسجل عملية في الخلفية بلا واجهة (تدعى 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> دالة تُرجع دالة لا تأخذ معاملات، يغلفها taskProvider ثم يعيدها مباشرةً عندما يُرسل طلب الإلغاء وذلك لتنفيذها. | ||
'''المعاملات''' | '''المعاملات''' | ||
| سطر 287: | سطر 287: | ||
* المعامل <code>TaskProvider</code> هو دالة تُرجع الدالة <code>Task</code>. | * المعامل <code>TaskProvider</code> هو دالة تُرجع الدالة <code>Task</code>. | ||
* الدالة <code>Task</code> تأخذ بيانات مثل معاملات وتُرجع <code>Promise</code>. | * الدالة <code>Task</code> تأخذ بيانات مثل معاملات وتُرجع <code>[[JavaScript/Promise|Promise]]</code>. | ||
* الدالة <code>TaskCancelProvider</code> تُرجع <code>TaskCanceller</code>. | * الدالة <code>TaskCancelProvider</code> تُرجع <code>TaskCanceller</code>. | ||
* الدالة <code>TaskCanceller</code> لا تأخذ معاملات | * الدالة <code>TaskCanceller</code> لا تأخذ معاملات ولا ترجع شيئًا. | ||
=== <code>startHeadlessTask</code> === | === <code>startHeadlessTask</code> === | ||
<syntaxhighlight class="react" lang="javascript">static startHeadlessTask(taskId, taskKey, data)</syntaxhighlight> | <syntaxhighlight class="react" lang="javascript">static startHeadlessTask(taskId, taskKey, data)</syntaxhighlight> | ||
تُستدعى من الشيفرة | تُستدعى من الشيفرة الأصلية (native code)، وتبدأ تنفيذ <code>headless task</code>. | ||
المعامل <code>taskId</code> هو المُعرِّف الخاص بالمهمة المُراد بدؤها، والمعامل <code>taskKey</code> هو المفتاح الخاص بها، أمّا المعامل <code>data</code> فهو البيانات التي يجب إرسالها للمهمة المراد تنفيذها. | المعامل <code>taskId</code> هو المُعرِّف الخاص بالمهمة المُراد بدؤها، والمعامل <code>taskKey</code> هو المفتاح الخاص بها، أمّا المعامل <code>data</code> فهو البيانات التي يجب إرسالها للمهمة المراد تنفيذها. | ||
| سطر 320: | سطر 320: | ||
<syntaxhighlight class="" lang="javascript">static cancelHeadlessTask(taskId, taskKey)</syntaxhighlight> | <syntaxhighlight class="" lang="javascript">static cancelHeadlessTask(taskId, taskKey)</syntaxhighlight> | ||
تُستدعى من الشيفرة الأصلية، وتلغي تنفيذ | تُستدعى من الشيفرة الأصلية، وتلغي تنفيذ عملية خلفية بلا واجهة (headless task). | ||
المعامل <code>taskId</code> هو المُعرِّف الخاص بالمهمة المُراد | المعامل <code>taskId</code> هو المُعرِّف الخاص بالمهمة المُراد إلغاء تنفيذها (وهي المهمة التي بدأت عند استدعاء الدالة <code>startHeadlessTask</code>، والمعامل <code>taskKey</code> هو المفتاح الخاص بها. | ||
'''المعاملات''' | '''المعاملات''' | ||
مراجعة 07:50، 6 مارس 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 للتأكد من إعداد بيئة التنفيذ إعدادًا صحيحًا قبل أن تكون هناك حاجة لوحدات أخرى.
الدوال
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 والذي يحتوي على:
sections(مصفوفة من سلاسل نصية)runnables(دوال قابلة للتشغيل [Runnables])
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)
تسجل عملية في الخلفية بلا واجهة (تدعى headless task) هي شيفرة تُنفَّذ دون واجهة مستخدم. يعد المعامل taskKey المفتاح المرتبط بتلك العملية، ويعد المعامل taskProvider وعدًا (promise) يُرجع دالة تأخذ بيانات من الطرف الأصيل من الهاتف (native side) على أنه الوسيط الوحيد. وبعد أن يرفض الوعد أو يُحَل، يُرسل إشعار للجانب الأصيل وقد يقرر تدمير سياق جافاسكريبت الحالي (JS context).
تُستعمل هذه الدالة لتشغيل بعض المهام في التطبيق أثناء عمله في الخلفية، لمزامنة البيانات أو التعامل مع الإشعارات الفورية أو تشغيل الموسيقى مثلًا.
المعاملات
| الاسم | النوع | مطلوب |
|---|---|---|
taskKey
|
سلسلة نصية (string) | نعم |
taskProvider
|
TaskProvider
|
نعم |
- يعد
TaskProviderالمطلوب دالة تُرجع الدالةTask. - الدالة
Taskتأخذ بيانات وسيطة وتُرجع وعدًاPromiseيتم استيفاؤه (قبوله أو حله) على أنهundefined.
registerCancellableHeadlessTask()
static registerCancellableHeadlessTask(taskKey, taskProvider, taskCancelProvider)
تسجل عملية في الخلفية بلا واجهة (تدعى headless task) قابلة للإلغاء، وتلك العملية هي شيفرة تُنفّد بدون واجهة مستخدِم، حيث يعد المعامل taskKey المفتاح المرتبط بتلك العملية ويعد المعامل taskProvider وعدًا (promise) يُرجع دالة تأخذ بيانات من الطرف الأصيل من الهاتف (native side) على أنه الوسيط الوحيد. وبعد أن يرفض الوعد أو يُحَل، يُرسل إشعار للجانب الأصيل وقد يقرر تدمير سياق جافاسكريبت الحالي (JS context). المعامل taskCancelProvider دالة تُرجع دالة لا تأخذ معاملات، يغلفها taskProvider ثم يعيدها مباشرةً عندما يُرسل طلب الإلغاء وذلك لتنفيذها.
المعاملات
| الاسم | النوع | مطلوب |
|---|---|---|
taskKey
|
سلسلة نصية (string) | نعم |
taskProvider
|
TaskProvider
|
نعم |
taskCancelProvider
|
TaskCancelProvider
|
نعم |
- المعامل
TaskProviderهو دالة تُرجع الدالةTask. - الدالة
Taskتأخذ بيانات مثل معاملات وتُرجعPromise. - الدالة
TaskCancelProviderتُرجعTaskCanceller. - الدالة
TaskCancellerلا تأخذ معاملات ولا ترجع شيئًا.
startHeadlessTask
static startHeadlessTask(taskId, taskKey, data)
تُستدعى من الشيفرة الأصلية (native code)، وتبدأ تنفيذ 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 | نعم |