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

من موسوعة حسوب
ط تصحيح الروابط
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: View في React Native}}</noinclude>
<noinclude>{{DISPLAYTITLE: View في React Native}}</noinclude>
المُكوِّن ‎‎<code>View</code>‎‎ هو المكوِّن الأساسيّ لبناء واجهة مستخدم، وهو‎‎ حاوية تدعم التخطيط باستخدام [https://wiki.hsoub.com/ReactNative/flexbox flexbox]،وتدعم [https://wiki.hsoub.com/ReactNative/style التنسيق]، وبعض مبادئ [https://wiki.hsoub.com/ReactNative/handling_touches معالجة اللمسات]، وأدوات [https://wiki.hsoub.com/ReactNative/accessibility التحكم في إمكانية الوصول]. يُربَطُ المُكوِّن ‎‎<code>View</code>‎‎ مباشرةً مع العرض الأصيل الذي يُعادله حسب نظام التشغيل الذي يعمل عليه React Native، سواء أكان ذلك عرض ‎‎<code>UIView</code>‎‎، أو ‎‎<code><nowiki><div></nowiki></code>‎‎، أو ‎‎<code>android.view</code>‎‎ وما إلى ذلك.
المُكوِّن ‎‎<code>View</code>‎‎ هو المكوِّن الأساسيّ لبناء واجهة مستخدم، وهو‎‎ حاوية تدعم التخطيط باستخدام [[ReactNative/flexbox|flexbox]]،وتدعم [[ReactNative/style|التنسيق]]، وبعض مبادئ [[ReactNative/handling touches|معالجة اللمسات]]، وأدوات [[ReactNative/accessibility|التحكم في إمكانية الوصول]]. يُربَطُ المُكوِّن ‎‎<code>View</code>‎‎ مباشرةً مع العرض الأصيل الذي يُعادله حسب نظام التشغيل الذي يعمل عليه React Native، سواء أكان ذلك عرض ‎‎<code>UIView</code>‎‎، أو ‎‎<code><nowiki><div></nowiki></code>‎‎، أو ‎‎<code>android.view</code>‎‎ وما إلى ذلك.


صُمِّم المُكوِّن ‎‎<code>View</code>‎‎ ليتداخل داخل عروضٍ أخرى ويمكن أن لا يحتوي على أي عناصر أبناء كما يُمكن أن يحتوي على العديد من العناصر الأبناء من أي نوع.
صُمِّم المُكوِّن ‎‎<code>View</code>‎‎ ليتداخل داخل عروضٍ أخرى ويمكن أن لا يحتوي على أي عناصر أبناء كما يُمكن أن يحتوي على العديد من العناصر الأبناء من أي نوع.
سطر 24: سطر 24:
</syntaxhighlight>
</syntaxhighlight>


صُمِّمت مكوّنات ‎ <code>View</code>‎‎‎لتُستخدَم مع كائن [https://wiki.hsoub.com/ReactNative/stylesheet StyleSheet] من أجل الوضوح وتحسين الأداء، رغم أنّ التنسيقات السطريّة (inline styles) مدعومة أيضًا.
صُمِّمت مكوّنات ‎ <code>View</code>‎‎‎لتُستخدَم مع كائن [[ReactNative/stylesheet|StyleSheet]] من أجل الوضوح وتحسين الأداء، رغم أنّ التنسيقات السطريّة (inline styles) مدعومة أيضًا.
==أحداث اللمس الاصطناعية ‎‎ (Synthetic Touch Events)==
==أحداث اللمس الاصطناعية ‎‎ (Synthetic Touch Events)==
بالنسبة لخاصيات مُستجيب (responder) المُكوِّن ‎‎<code>View</code>‎‎  (الخاصيّة ‎‎<code>onResponderMove</code>‎‎ مثلا)، يكون حدث اللمس الاصطناعي الذي يُمرَّر إليها على الشكل التالي:
بالنسبة لخاصيات مُستجيب (responder) المُكوِّن ‎‎<code>View</code>‎‎  (الخاصيّة ‎‎<code>onResponderMove</code>‎‎ مثلا)، يكون حدث اللمس الاصطناعي الذي يُمرَّر إليها على الشكل التالي:

مراجعة 20:14، 13 سبتمبر 2021

المُكوِّن ‎‎View‎‎ هو المكوِّن الأساسيّ لبناء واجهة مستخدم، وهو‎‎ حاوية تدعم التخطيط باستخدام flexbox،وتدعم التنسيق، وبعض مبادئ معالجة اللمسات، وأدوات التحكم في إمكانية الوصول. يُربَطُ المُكوِّن ‎‎View‎‎ مباشرةً مع العرض الأصيل الذي يُعادله حسب نظام التشغيل الذي يعمل عليه React Native، سواء أكان ذلك عرض ‎‎UIView‎‎، أو ‎‎<div>‎‎، أو ‎‎android.view‎‎ وما إلى ذلك.

صُمِّم المُكوِّن ‎‎View‎‎ ليتداخل داخل عروضٍ أخرى ويمكن أن لا يحتوي على أي عناصر أبناء كما يُمكن أن يحتوي على العديد من العناصر الأبناء من أي نوع.

يُنشئ هذا المثال مُكوِّن ‎‎View‎‎ يُغلِّف صندوقين ملونين ومكونَ نصٍّ في صف مع حشو (padding):

class ViewColoredBoxesWithText extends Component {
  render() {
    return (
      <View
        style={{
          flexDirection: 'row',
          height: 100,
          padding: 20,
        }}>
        <View style={{backgroundColor: 'blue', flex: 0.3}} />
        <View style={{backgroundColor: 'red', flex: 0.5}} />
        <Text>Hello World!</Text>
      </View>
    );
  }
}

صُمِّمت مكوّنات ‎ View‎‎‎لتُستخدَم مع كائن StyleSheet من أجل الوضوح وتحسين الأداء، رغم أنّ التنسيقات السطريّة (inline styles) مدعومة أيضًا.

أحداث اللمس الاصطناعية ‎‎ (Synthetic Touch Events)

بالنسبة لخاصيات مُستجيب (responder) المُكوِّن ‎‎View‎‎ (الخاصيّة ‎‎onResponderMove‎‎ مثلا)، يكون حدث اللمس الاصطناعي الذي يُمرَّر إليها على الشكل التالي:

  • nativeEvent
    • ‎‎changedTouches‎‎: مصفوفة جميع أحداث اللمس التي تغيّرت منذ آخر حدث.
    • ‎‎identifier‎‎: مُعرِّف (ID) اللمسة.
    • ‎‎locationX‎‎: موقع X للّمسة، نسبةً للعنصر.
    • ‎‎locationY‎‎: موقع Y للّمسة، نسبةً للعنصر.
    • ‎‎pageX‎‎: موضع X للّمسة، نسبةً للعنصر الجذر (root element).
    • ‎‎pageY‎‎: موقع Y للّمسة، نسبةً للعنصر الجذر.
    • ‎‎target‎‎: مُعرِّف العقدة (node id) للعنصر الذي يستقبل حدث اللمسة.
    • ‎‎timestamp‎‎: مُعرِّف وقتٍ (time identifier) للمسة، ما يُفيد في حساب السرعة.
    • ‎‎touches‎‎: مصفوفة جميع اللمسات الحالية على الشاشة.

للمزيد، انظر صفحة نظام مستجيب الإيماءات.

الخاصيات

‎‎onStartShouldSetResponder‎‎

هل يريد هذا العرض أن يصبح مستجيبًا عند بدء اللمس؟

مثال: ‎‎View.props.onStartShouldSetResponder: (event) => [true | false]‎‎، بحيث يكون ‎‎event‎‎ حدثَ لمسٍ اصطناعيّ كما هو موضح أعلاه.

النوع مطلوب
دالة لا

‎‎accessible‎‎

عندما تكون قيمتُها القيمةَ ‎‎true‎‎، فهذا يُشير إلى أنّ العرضَ هو عنصرُ إمكانيةِ الوصول (accessibility element). افتراضيًّا، جميع العناصر القابلة للمس هي عناصر إمكانية وصول.

النوع مطلوب
قيمة منطقيّة لا

‎‎accessibilityLabel‎‎

تستبدِل النص الذي يقرأه قارئ الشاشة عندما يتفاعل المستخدم مع العنصر. افتراضيًا، يُنشأ الملصق (label) عن طريق العبور عبر جميع المكوّنات الأبناء وتجميع كافة العقد النصية مفصولةً بمسافة.

النوع مطلوب
سلسلة نصيّة لا

‎‎accessibilityHint‎‎

يُساعد تلميح إمكانية الوصول (accessibility hint) المستخدمينَ على فهم ما سيحدث عندما يقومون بإجراءٍ على عنصر إمكانية الوصول عندما لا تكون النتيجة واضحةً من مُلصَق إمكانية الوصول.

النوع مطلوب
سلسلة نصيّة لا

‎‎accessibilityRole‎‎

تقوم الخاصيّة accessibilityRole بتوصيل الغرض من المكون (أي دَوره) إلى مُستخدمِ تقنيةٍ مساعدة (assistive technology).

يُمكن للخاصيّة ‎‎accessibilityRole‎‎ أن تحمل أحد القيم التالية:

  • ‎‎'none'‎‎ - تُستخدَم عندما لا يكون للعنصر أي دور.
  • ‎‎'button'‎‎ - تستخدم عندما تجب معاملة العنصر كزر.
  • ‎‎'link'‎‎ - تستخدم عندما تجب معاملة العنصر كرابط.
  • ‎‎'search'‎‎ - تستخدم عندما تجب معاملة عنصر حقل النص كعنصر بحث كذلك.
  • ‎‎'image'‎‎ - تستخدم عندما تجب معاملة العنصر كصورة. يمكن دمجها مع زرٍ أو رابطٍ مثلا.
  • ‎‎'keyboardkey'‎‎ - تستخدم عندما يتصرَّف العنصرُ كمفتاح لوحة مفاتيح.
  • ‎‎'text'‎‎ - تستخدم عندما تجب معاملة العنصر كنص ثابت لا يمكن تغييره.
  • ‎‎'adjustable'‎‎ - تستخدم عندما يمكن "تعديل" العنصر (مثل شريط تمريرٍ [slider]).
  • ‎‎'imagebutton'‎‎ - تستخدم عندما تجب معاملة العنصر كزرٍ مع كونِه صورة في نفس الوقت.
  • ‎‎'header'‎‎ - تستخدم عندما يتصرف عنصرٌ كترويسةٍ (header) لقسمِ محتوى (كعنوان شريط التنقل).
  • ‎‎'summary'‎‎ - تستخدم عندما يمكن استخدام عنصر ما لتقديم ملخص سريع للظروف الحالية في التطبيق عند بدء تشغيل التطبيق لأول مرة.
  • ‎‎'alert'‎‎ - تستخدم عندما يحتوي عنصر على نص مهم لعرضه للمستخدم.
  • ‎‎'checkbox'‎‎ - تستخدم عندما يمثل عنصر مربعًا يمكن تحديده أو إلغاء تحديده أو في حالة تحديد مختلطة.
  • ‎‎'combobox'‎‎ - تستخدم عندما يمثل عنصر مربع تحرير وسرد (combo box)، مما يسمح للمستخدم بالاختيار من بين عدة خيارات.
  • ‎‎'menu'‎‎ - تستخدم عندما يكون المكون قائمةً من الخيارات.
  • ‎‎'menubar'‎‎ - تستخدم عندما يكون المكون عبارة عن حاوية متعددة القوائم.
  • ‎‎'menuitem'‎‎ - تستخدم لتمثيل عنصرٍ داخل قائمة.
  • ‎‎'progressbar'‎‎ - تستخدم لتمثيل مكون يشير إلى تقدم المهمة (شريط تقدم).
  • ‎‎'radio'‎‎ - تستخدم لتمثيل زر اختيار.
  • ‎‎'radiogroup'‎‎ - تستخدم لتمثيل مجموعة من أزرار الاختيار.
  • ‎‎'scrollbar'‎‎ - تستخدم لتمثيل شريط تمرير.
  • ‎‎'spinbutton'‎‎ - تستخدم لتمثيل زر يفتح قائمة من الخيارات.
  • ‎‎'switch'‎‎ - تستخدم لتمثيل مُحوِّلة يمكن تشغيلها وإيقاف تشغيلها.
  • ‎‎'tab'‎‎ - تستخدم لتمثيل علامة تبويب.
  • ‎‎'tablist'‎‎ - تستخدم لتمثيل قائمة من علامات التبويب.
  • ‎‎'timer'‎‎ - تستخدم لتمثيل مؤقت.
  • ‎‎'toolbar'‎‎ - تستخدم لتمثيل شريط أدوات (حاوية من أزرارٍ ومكوّنات إجراءات).
النوع مطلوب
سلسلة نصيّة لا

‎‎accessibilityState‎‎

تصف الحالة الحالية لمكوّنٍ ما لمستخدمِ تقنيةٍ مساعدة.

انظر دليل إمكانية الوصول لمزيد من المعلومات.

النوع مطلوب
‎‎object: {disabled: bool, selected: bool, checked: bool or 'mixed', busy: bool, expanded: bool}‎‎ لا

‎‎accessibilityValue‎‎

تُمثل القيمة الحالية للمكون. يمكن أن تكون قيمتها وصفًا نصيًا لقيمة المكون، ويمكن أن تحتوي على معلومات النطاق (الحد الأدنى [minimum]، القيمة الحالية [current]، والحد الأقصى [maximum]) للمكونات المعتمدة على النطاق (range-based components)، كأشرطة التمرير (sliders) وأشرطة التقدم (progress bars).

انظر دليل إمكانية الوصول لمزيد من المعلومات.

النوع مطلوب
object: {min: number, max: number, now: number, text: string} لا

‎‎accessibilityActions‎‎

تسمح إجراءات إمكانية الوصول (Accessibility actions) لتقنيّة مساعدة باستدعاء إجراءات مكونٍ برمجيًا. يجب أن تحتوي الخاصية accessibilityActions على قائمة كائنات إجراءات (action objects). يجب أن يحتوي كل كائن إجراء على اسم الحقل وعلى ملصق (label).

انظر دليل إمكانية الوصول لمزيد من المعلومات.

النوع مطلوب
مصفوفة لا

‎‎onAccessibilityAction‎‎

دالةٌ تُستدعى عند قيام المستخدم بتنفيذ إجراءات إمكانية الوصول. معامل هذه الدالة الوحيد هو حدثٌ يحتوي على اسم الإجراء المراد تنفيذه.

انظر دليل إمكانية الوصول لمزيد من المعلومات.

النوع مطلوب
دالة لا

‎‎onAccessibilityTap‎‎

عندما تكون الخاصيّة ‎‎accessible‎‎ ذات القيمة ‎‎true‎‎، سيحاول النظام استدعاء هذه الدالة عندما يقوم المستخدم بإجراء إيماءةِ نقرِ إمكانيةِ وصول (accessibility tap gesture).

النوع مطلوب
دالة لا

‎‎onMagicTap‎‎

عندما تكون الخاصيّة ‎‎accessible‎‎ ذات القيمة ‎‎true‎‎، سيستدعي النظام هذه الدالة عندما يقوم المستخدم بإجراء إيماءةِ نقر سحريّة (magic tap gesture).

النوع مطلوب المنصة
دالة لا iOS

‎‎onAccessibilityEscape‎‎

عندما تكون الخاصيّة ‎‎accessible‎‎ ذات القيمة ‎‎true‎‎، سيستدعي النظام هذه الدالة عندما يقوم المستخدم بإجراء إيماءةِ إفلات (escape gesture).

النوع مطلوب المنصة
دالة لا iOS

‎‎accessibilityViewIsModal‎‎

قيمة تشير إلى ما إذا كان ينبغي على VoiceOver أن يتجاهل العناصر الموجودة داخل عروض المتلقي الأشقّاء. القيمة الافتراضيّة هي ‎‎false‎‎.

انظر دليل إمكانية الوصول لمزيد من المعلومات.

النوع مطلوب المنصة
قيمة منطقيّة لا iOS

‎‎accessibilityElementsHidden‎‎

قيمة تشير إلى ما إذا كانت عناصر إمكانية الوصول الموجودة في عنصر إمكانية الوصول هذا مخفيةً أو لا. القيمة الافتراضيّة هي ‎‎false‎‎.

انظر دليل إمكانية الوصول لمزيد من المعلومات.

النوع مطلوب المنصة
قيمة منطقيّة لا iOS

‎‎accessibilityIgnoresInvertColors‎‎

قيمةٌ تُشير إلى ما إذا كان ينبغي قلب هذا العرض عند تشغيل قلب الألوان (color inversion). القيمة ‎‎true‎‎ تُشير إلى عدم قلب العرض حتى إذا تم تشغيل قلب الألوان.

انظر دليل إمكانية الوصول لمزيد من المعلومات.

النوع مطلوب المنصة
قيمة منطقيّة لا iOS

‎‎accessibilityLiveRegion‎‎

يشير إلى ما إذا كان ينبغي لخدمات إمكانية الوصول إعلام المستخدم عند تَغيُّر هذا العرض. يعمل في Android API المستوى 19 أو أحدث فقط. القيم الممكنة:

  • ‎‎'none'‎‎: يجب ألا تعلن خدمات إمكانية الوصول عن تغيُّرات هذا العرض.
  • ‎‎'polite'‎‎: يجب أن تعلن خدمات إمكانية الوصول عن تغيُّرات هذا العرض.
  • ‎‎'assertive'‎‎: يجب أن تُقاطع خدمات إمكانية الوصول الكلامَ الحالي للإعلان فورًا عن تغيُّرات هذا العرض.

راجع توثيق View على موقع Android للمزيد.

النوع مطلوب المنصة
‎‎enum('none', 'polite', 'assertive')‎‎ لا Android

‎‎importantForAccessibility‎‎

تتحكم في مدى أهمية العرض لإمكانية الوصول، ويكون مُهمًّا إذا كان يُطلِق أحداث إمكانية الوصول (accessibility events) وإذا كان يُبلَّغ عنه إلى خدمات إمكانية الوصول (reported to accessibility services) التي تَسْتَعلِم الشاشة (query the screen). هذه خاصيّةٌ تعمل على نظام Android فقط.

القيم الممكنة:

  • ‎‎'auto'‎‎: يحدد النظام ما إذا كان العرض مُهمًا لإمكانيّة الوصول – القيمة الافتراضية (مستحسن).
  • ‎‎'yes'‎‎: العرض مهم لإمكانيّة الوصول.
  • ‎‎'no'‎‎: العرض ليس مهمّا لإمكانيّة للوصول.
  • ‎‎'no-hide-descendants'‎‎: العرض ليس مهمّا لإمكانيّة للوصول ولا أي من مكوّناته الأحفاد.

راجع توثيق importantForAccessibility على موقع Android للمزيد.

النوع مطلوب المنصة
‎‎enum('auto', 'yes', 'no', 'no-hide-descendants')‎‎ لا Android

‎‎hitSlop‎‎

تُحدد هذه الخاصيّة المدى الذي يمكن أن يبدأ فيه لمس الزّر بعيدًا عن العرض. توصي إرشادات الواجهة النموذجية بأهداف لمسٍ لا تقل عن 30 إلى 40 نقطة (وحدات بكسل مستقلّة عن الكثافة [density-independent pixels]).

على سبيل المثال، إذا كان عرض قابل للّمس ذا ارتفاعٍ يبلغ 20، يمكن تمديد ارتفاع الجزء القابل للّمس إلى 40 باستخدام: ‎‎hitSlop={{top: 10, bottom: 10, left: 0, right: 0}}‎‎.

ملاحظة: لا تمتد منطقة اللمس أبدًا بعد حدود العرض الأب، ودائمًا ما يأخذ مؤشر Z-index الخاص بالعروض الأشقّاء (المجاورة) الأولويّةَ إذا وقعت اللمسة على عرضين متداخلين.

النوع مطلوب
‎‎object: {top: number, left: number, bottom: number, right: number}‎‎ لا

‎‎nativeID‎‎

تُستخدَم لتحديد موقع هذا العرض من الشيفرة الأصيلة.

ملاحظة: يؤدي هذا إلى تعطيل تحسين "إزالةُ عرضِ التخطيط فقط (layout-only view removal)" لهذا العرض!

النوع مطلوب
سلسلة نصيّة لا

‎‎onLayout‎‎

دالةٌ تُستدعى عند حدوث تغيّرات التركيب والتخطيط مع الحدث ‎‎{nativeEvent: {layout: {x, y, width, height}}}‎‎.

يُطلَق هذا الحدث على الفور بمجرد حساب التخطيط، ولكن قد لا ينعكس التخطيط الجديد على الشاشة في وقت استلام الحدث، خاصة إذا كان تحريكُ تخطيطٍ (layout animation) قيد التحرُّك.

النوع مطلوب
دالة لا

‎‎onMoveShouldSetResponder‎‎

هل هذا العرض "يتطلّب" الاستجابة للّمس (touch responsiveness)؟ تُستدعى هذه الدالة في كل حركة لمسٍ على المكوّن ‎‎View‎‎ عندما لا يكون المستجيب (the responder).

‎‎View.props.onMoveShouldSetResponder: (event) => [true | false]‎‎، بحيثُ يكون ‎‎event‎‎ حدثَ لمسٍ اصطناعي (synthetic touch event) كما هو موضح أعلاه.

النوع مطلوب
دالة لا

‎‎onMoveShouldSetResponderCapture‎‎

إذا أراد مُكوِّنُ ‎‎View‎‎ أبٍ منع مكوّنِ ‎‎View‎‎ ابنٍ من أن يصبح المستجيب أثناء تحريك المستخدم لإصبعه، فيجب أن يحتويَ على هذا المعالج مُعيدًا القيمة ‎‎true‎‎.

‎‎View.props.onMoveShouldSetResponderCapture: (event) => [true | false]‎‎، بحيث يكون ‎‎event‎‎ حدثَ لمسٍ اصطناعيّ كما هو موضح أعلاه.

النوع مطلوب
دالة لا

‎‎onResponderGrant‎‎

يستجيب العرض الآن لأحداث اللمس. هذا هو الوقت المناسب لإبراز وإظهار ما يحدث للمستخدم. مثال: ‎‎View.props.onResponderGrant: (event) => {}‎‎، بحيث يكون ‎‎event‎‎ حدثَ لمسٍ اصطناعيّ كما هو موضح أعلاه.

النوع مطلوب
دالة لا

‎‎onResponderMove‎‎

عندما يُحرِّك المستخدمُ إصبعه. مثال: ‎‎View.props.onResponderMove: (event) => {}‎‎، بحيث يكون ‎‎event‎‎ حدثَ لمسٍ اصطناعيّ كما هو موضح أعلاه.

النوع مطلوب
دالة لا

‎‎onResponderReject‎‎

دالةٌ تُستدعى عندما يكون مستجيبٌ آخر نشِطًا ولا يُحرِّره للعرض الذي يُريد أن يكون المستجيب.

مثال: ‎‎View.props.onResponderReject: (event) => {}‎‎، بحيث يكون ‎‎event‎‎ حدثَ لمسٍ اصطناعيّ كما هو موضح أعلاه.

النوع مطلوب
دالة لا

‎‎onResponderRelease‎‎

دالةٌ تُستدعى عند نهاية اللمس. مثال: ‎‎View.props.onResponderRelease: (event) => {}‎‎، بحيث يكون ‎‎event‎‎ حدثَ لمسٍ اصطناعيّ كما هو موضح أعلاه.

النوع مطلوب
دالة لا

‎‎onResponderTerminate‎‎

دالةٌ تُستدعى عندما يُأخَذ المستجيب من العرض. قد تأخذه عروض أخرى بعد استدعاء ‎‎onResponderTerminationRequest‎‎، أو قد يأخذه نظام التشغيل دون طلب (يحدث هذا مع مركز التحكم أو مركز التنبيهات على iOS مثلًا)

مثال: ‎‎View.props.onResponderTerminate: (event) => {}‎‎، بحيث يكون ‎‎event‎‎ حدثَ لمسٍ اصطناعيّ كما هو موضح أعلاه.

النوع مطلوب
دالة لا

‎‎onResponderTerminationRequest‎‎

دالة تُستدعى عندما يريد عرضٌ آخر أن يصبح مستجيبًا ويطلب من هذا العرض تحرير المستجيب الخاص به. إعادة القيمة ‎‎true‎‎ يسمح بإطلاقه.

مثال: ‎‎View.props.onResponderTerminationRequest: (event) => {}‎‎، بحيث يكون ‎‎event‎‎ حدثَ لمسٍ اصطناعيّ كما هو موضح أعلاه.

النوع مطلوب
دالة لا

‎‎onStartShouldSetResponderCapture‎‎

إذا أراد مُكوِّن ‎‎View‎‎ منع مُكوِّنِ ‎‎View‎‎ ابنٍ من أن يصبح مستجيبًا عند بداية اللمس، فيجب أن يحتويَ على هذا المعالج مُعيدًا القيمة ‎‎true‎‎.

مثال: ‎‎View.props.onStartShouldSetResponderCapture: (event) => [true | false]‎‎، بحيث يكون ‎‎event‎‎ حدثَ لمسٍ اصطناعيّ كما هو موضح أعلاه.

النوع مطلوب
دالة لا

‎‎pointerEvents‎‎

تتحكم في ما إذا كان العرض قادرًا على أن يكون هدفًا (target) لأحداث اللمس.

  • ‎‎'auto'‎‎: يمكن أن يكون العرض هدفًا لأحداث اللمس.
  • ‎‎'none'‎‎: لا يعد العرض هدفًا لأحداث اللمس أبدًا.
  • ‎‎'box-none'‎‎: لا يعد العرض هدفًا لأحداث اللمس أبدًا، ولكن يمكن أن تكون عروضه الفرعية أهدافًا. يتصرف العرض كما لو كان ذا الأصناف التالية في CSS:
.box-none {
     pointer-events: none;
}
.box-none * {
     pointer-events: auto;
}
  • ‎‎'box-only'‎‎: يمكن أن يكون العرض هدفًا لأحداث اللمس، ولكنَّ عروضه الفرعية لا يُمكن لها أن تكون أهدافًا. يتصرف العرض كما لو كان ذا الأصناف التالية في CSS:
.box-only {
     pointer-events: auto;
}
.box-only * {
     pointer-events: none;
}

ملاحظة: نظرًا لأن ‎‎pointerEvents‎‎ لا تؤثر على التخطيط أو المظهر، ولأنّ React Native ينحرف عن المواصفة (spec) عبر إضافة أوضاعٍ (modes) إضافية، فإنّ المطورين قد اختاروا عدم تضمين الخاصيّة ‎‎pointerEvents‎‎ على ‎‎style‎‎. على بعض المنصات، سيحتاج المطورون إلى تطبيقها على شكل ‎‎className‎‎ على أي حال. استخدامُ ‎‎style‎‎ أو لا هو تفصيل تطبيق (implementation detail) خاص بالمنصّة.

النوع مطلوب
‎‎enum('box-none', 'none', 'box-only', 'auto')‎‎ لا

‎‎removeClippedSubviews‎‎

هذه خاصيةُ أداءٍ محجوزة (reserved performance property) موفَّرةٌ من طرف ‎‎RCTView‎‎ وهي مفيدة لتمرير المحتوى عندما يكون هناك العديد من العروض الفرعية، ويكون معظمها خارج الشاشة. لكي تكون هذه الخاصية فعالة، يجب تطبيقها على عرض يحتوي على العديد من العروض الفرعية التي تمتد خارج نطاقه. يجب أن تحتوي العروض الفرعية أيضًا على الخاصيّة ‎‎overflow: hidden‎‎، كما يجب أن يحتويَ عليها العرض الحاوي (أو أحد عروضه الآباء).

النوع مطلوب
قيمة منطقيّة لا

‎‎style‎‎

النوع مطلوب
تنسيقات العرض لا

‎‎testID‎‎

يُستخدَم لتحديد موقع هذا العرض في الاختبارات الشاملة (end-to-end tests).

ملاحظة: يؤدي هذا إلى تعطيل تحسين "إزالةُ عرضِ التخطيط فقط (layout-only view removal)" لهذا العرض!

النوع مطلوب
سلسلة نصيّة لا

‎‎collapsable‎‎

العروض التي تُستخدَم فقط لتخطيط المكونات الأبناء، أو تلك التي لا تَرسُمُ أي شيء، قد تُزال تلقائيًا من التسلسل الهرمي الأصيل (native hierarchy) كتحسين. عيّن القيمة ‎‎false‎‎ لهذه الخاصية لتعطيل هذا التحسين والتأكّد من وجود هذا العرض في التسلسل الهرمي الأصيل للعروض.

النوع مطلوب المنصة
قيمة منطقيّة لا Android

‎‎needsOffscreenAlphaCompositing‎‎

ما إذا كان هذا العرض يحتاج إلى تصييره خارج الشاشة وتكوينه باستخدام قيمة ألفا من أجل الحفاظ على الألوان الصحيحة وسلوك المزج بنسبة 100٪. يلجأ الإعداد الافتراضي (false) إلى رسم المكون وأبناءه باستخدام قيمة ألفا مُطبقّة على الطلاء المستخدم لرسم كل عنصر بدلاً من تصيير كامل المكوّن خارج الشاشة وتكوينه مرة أخرى بقيمة ألفا. قد يكون هذا الإعداد الافتراضي بارزًا وغير مرغوب فيه في الحالة التي يحتوي فيها العرض الذي تقوم بتعيين العتامة له على عدة عناصر متداخلة (كعروض متعددة متداخلة أو نصٍّ وخلفية).

التصيير خارج الشاشة للحفاظ على سلوك ألفا الصحيح مُكلِّف وصعب التنقيح لمطوري التطبيقات غير الأصيلة، ولهذا السبب فهو غير مُمكَّن افتراضيًا. إذا كنت بحاجة إلى تمكين هذه الخاصية لتحريكٍ ما، فجرّب دمجها مع الخاصيّة ‎‎renderToHardwareTextureAndroid‎‎ إذا كانت محتويات العرض ثابتة (أي لا يلزم إعادة رسمها في كل إطار). إذا مُكِّنت تلك الخاصية، فسيُصيَّر هذا العرض خارج الشاشة مرة واحدة، وسيُحفَظ في تركيب عتاد (hardware texture)، ثم سيُكوَّن على الشاشة باستخدام قيمة ألفا لكل إطار دون الحاجة إلى تبديل أهداف التصيير على وحدة معالجة الرسومات (GPU).

النوع مطلوب
قيمة منطقيّة لا

‎‎renderToHardwareTextureAndroid‎‎

ما إذا ينبغي أن يُصيِّر هذا العرض نفسه (وجميع أبنائه) في تركيب عتاد واحد على وحدة معالجة الرسومات.

هذا مفيدٌ على نظام Android للتحريكات والتفاعلات التي تُعدِّل فقط العتامة (opacity)، التدوير (rotation)، النقل (translation)، و/أو المقياس (scale): في هذه الحالات، لا يلزم إعادة رسم العرض ولن تحتاج قوائم العرض إلى إعادة التنفيذ. يمكن إعادة استخدام التركيب وإعادة تكوينه بمعاملات مختلفة. الجانب السلبي هو أن هذا قد يستخدم ذاكرة الفيديو المحدودة، لذلك يجب أن يُعاد تعيين القيمة ‎‎false‎‎ لهذه الخاصيّة في نهاية التفاعل أو التحريك.

النوع مطلوب المنصة
قيمة منطقيّة لا Android

‎‎shouldRasterizeIOS‎‎

ما إذا كان ينبغي تصيير هذا العرض كصورة نقطية (bitmap) قبل التركيب.

هذا مفيدٌ على نظام iOS للتحريكات والتفاعلات التي لا تُعدِّل أبعاد هذا المكون ولا أبعاد مكوناته الأبناء؛ على سبيل المثال، عند نقل (translating) موضع (position) عرضٍ ثابت، يتيح التنقيط (rasterization) للمُصيِّر إعادةَ استخدام صورة نقطية مخزنة مؤقتًا (أو مُخبّأة: cached) لعرضٍ ثابت وتركيبها بسرعة أثناء كل إطار.

يجلبُ التنقيط مرور رسمٍ خارج الشاشة وتستهلك الصورة النقطية الذاكرة. اختبر وقِس عند استخدام هذه الخاصية.

النوع مطلوب المنصة
قيمة منطقيّة لا iOS

‎‎nextFocusDown‎‎

تُحدِّد العرض التالي الذي سيستقبل التركيز عندما ينتقل المستخدم لأسفل. انظر توثيق Android.

النوع مطلوب المنصة
عدد لا Android

‎‎nextFocusForward‎‎

تُحدِّد العرض التالي الذي سيستقبل التركيز عندما ينتقل المستخدم للأمام. انظر توثيق Android.

النوع مطلوب المنصة
عدد لا Android

‎‎nextFocusLeft‎‎

تُحدِّد العرض التالي الذي سيستقبل التركيز عندما ينتقل المستخدم لليسار. انظر توثيق Android.

النوع مطلوب المنصة
عدد لا Android

‎‎nextFocusRight‎‎

تُحدِّد العرض التالي الذي سيستقبل التركيز عندما ينتقل المستخدم لليمين. انظر توثيق Android.

النوع مطلوب المنصة
عدد لا Android

‎‎nextFocusUp‎‎

تُحدِّد العرض التالي الذي سيستقبل التركيز عندما ينتقل المستخدم لأعلى. انظر توثيق Android.

النوع مطلوب المنصة
عدد لا Android

‎‎clickable‎‎

لتحديد ما إذا كان هذا العرض قابلًا للنقر أو قابلا للّمس للحصول على تلميحات إمكانية الوصول.

النوع مطلوب المنصة
قيمة منطقيّة لا Android

مصادر