الفرق بين المراجعتين ل"ReactNative/platform"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط (مراجعة)
سطر 1: سطر 1:
== المكوّن Platform ==
+
<noinclude>{{DISPLAYTITLE:الواجهة Platform في React Native}}</noinclude>
 
+
إليك المثال التالي ([https://snack.expo.dev/@hsoubwiki/platform-api-example تجربة حية]):<syntaxhighlight lang="javascript">
=== مثال عن واجهة API للمكوّن Platform ===
 
<syntaxhighlight lang="javascript">
 
 
import React from 'react';
 
import React from 'react';
 
import { Platform, StyleSheet, Text, ScrollView } from 'react-native';
 
import { Platform, StyleSheet, Text, ScrollView } from 'react-native';
سطر 43: سطر 41:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== مرجع الخصائص Properties ===
+
== الخاصيات ==
  
==== <code>constants</code> ====
+
===<code>constants</code>===
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
Platform.constants;
 
Platform.constants;
 
</syntaxhighlight>تعيد هذه الخاصية كائنًا يحتوي على جميع الثوابت المشتركة والمحددة المتاحة والمتعلقة بالمنصة platform.
 
</syntaxhighlight>تعيد هذه الخاصية كائنًا يحتوي على جميع الثوابت المشتركة والمحددة المتاحة والمتعلقة بالمنصة platform.
  
'''الخصائص''':
+
'''خاصيات الكائن''':
 
{| class="wikitable"
 
{| class="wikitable"
 
!الاسم
 
!الاسم
سطر 57: سطر 55:
 
!الوصف
 
!الوصف
 
|-
 
|-
|isTesting
+
|<code>isTesting</code>
 
|قيمة منطقية boolean
 
|قيمة منطقية boolean
 
|لا
 
|لا
 
|
 
|
 
|-
 
|-
|reactNativeVersion
+
|<code>reactNativeVersion</code>
 
|كائن object
 
|كائن object
 
|لا
 
|لا
 
|معلومات حول إصدار React Native. المفاتيح هي <code>major</code> و <code>minor</code> و <code>patch</code> مع <code>prerelease</code> الاختياري والقيم هي أعداد <code>number</code>.
 
|معلومات حول إصدار React Native. المفاتيح هي <code>major</code> و <code>minor</code> و <code>patch</code> مع <code>prerelease</code> الاختياري والقيم هي أعداد <code>number</code>.
 
|-
 
|-
|Version  
+
|<code>Version</code>
 
(Android)
 
(Android)
 
|عدد number
 
|عدد number
سطر 73: سطر 71:
 
|ثابت إصدار نظام التشغيل وهو خاص بنظام Android.
 
|ثابت إصدار نظام التشغيل وهو خاص بنظام Android.
 
|-
 
|-
|Release  
+
|<code>Release</code>
 
(Android)
 
(Android)
 
|سلسلة نصية string
 
|سلسلة نصية string
سطر 79: سطر 77:
 
|
 
|
 
|-
 
|-
|Serial  
+
|<code>Serial</code>
 
(Android)
 
(Android)
 
|سلسلة نصية string
 
|سلسلة نصية string
سطر 85: سطر 83:
 
|رقم العتاد التسلسلي لجهاز Android.
 
|رقم العتاد التسلسلي لجهاز Android.
 
|-
 
|-
|Fingerprint  
+
|<code>Fingerprint</code>
 
(Android)
 
(Android)
 
|سلسلة نصية string
 
|سلسلة نصية string
سطر 91: سطر 89:
 
|سلسلة نصية تحدد البناء بصورة فريدة.
 
|سلسلة نصية تحدد البناء بصورة فريدة.
 
|-
 
|-
|Model  
+
|<code>Model</code>
 
(Android)
 
(Android)
 
|سلسلة نصية string
 
|سلسلة نصية string
سطر 97: سطر 95:
 
|اسم المستخدم النهائي المرئي لجهاز Android.
 
|اسم المستخدم النهائي المرئي لجهاز Android.
 
|-
 
|-
|Brand  
+
|<code>Brand</code>
 
(Android)
 
(Android)
 
|سلسلة نصية string
 
|سلسلة نصية string
سطر 103: سطر 101:
 
|علامة المستهلك التجارية المرئية التي سيرتبط المنتج / العتاد بها.
 
|علامة المستهلك التجارية المرئية التي سيرتبط المنتج / العتاد بها.
 
|-
 
|-
|Manufacturer  
+
|<code>Manufacturer</code>
 
Android
 
Android
 
|سلسلة نصية string
 
|سلسلة نصية string
سطر 109: سطر 107:
 
|الشركة المصنعة لجهاز Android.
 
|الشركة المصنعة لجهاز Android.
 
|-
 
|-
|ServerHost  
+
|<code>ServerHost</code>
 
(Android)
 
(Android)
 
|سلسلةنصية string
 
|سلسلةنصية string
سطر 115: سطر 113:
 
|
 
|
 
|-
 
|-
|uiMode  
+
|<code>uiMode</code>
 
(Android)
 
(Android)
 
|سلسلة نصية string
 
|سلسلة نصية string
سطر 121: سطر 119:
 
|القيم الممكنة: <code>'car'</code> و <code>'desk'</code> و <code>'normal'</code> و <code>'tv'</code> و <code>'watch'</code> و <code>'unknown'</code>. اطّلع على المزيد حول [https://developer.android.com/reference/android/app/UiModeManager Android ModeType].
 
|القيم الممكنة: <code>'car'</code> و <code>'desk'</code> و <code>'normal'</code> و <code>'tv'</code> و <code>'watch'</code> و <code>'unknown'</code>. اطّلع على المزيد حول [https://developer.android.com/reference/android/app/UiModeManager Android ModeType].
 
|-
 
|-
|forceTouchAvailable  
+
|<code>forceTouchAvailable</code>
 
(iOS)
 
(iOS)
 
|قيمة منطقية boolean
 
|قيمة منطقية boolean
سطر 127: سطر 125:
 
|تحدّد توفر اللمس ثلاثي الأبعاد 3D Touch على الجهاز.
 
|تحدّد توفر اللمس ثلاثي الأبعاد 3D Touch على الجهاز.
 
|-
 
|-
|interfaceIdiom  
+
|<code>interfaceIdiom</code>
 
(iOS)
 
(iOS)
 
|سلسلة نصية string
 
|سلسلة نصية string
سطر 133: سطر 131:
 
|نوع واجهة الجهاز. اطّلع على المزيد حول [https://developer.apple.com/documentation/uikit/uiuserinterfaceidiom UIUserInterfaceIdiom].
 
|نوع واجهة الجهاز. اطّلع على المزيد حول [https://developer.apple.com/documentation/uikit/uiuserinterfaceidiom UIUserInterfaceIdiom].
 
|-
 
|-
|osVersion  
+
|<code>osVersion</code>
 
(iOS)
 
(iOS)
 
|سلسلة نصية string
 
|سلسلة نصية string
سطر 139: سطر 137:
 
|ثابت إصدار نظام التشغيل وهو خاص بنظام iOS.
 
|ثابت إصدار نظام التشغيل وهو خاص بنظام iOS.
 
|-
 
|-
|systemName  
+
|<code>systemName</code>
 
(iOS)
 
(iOS)
 
|سلسلة نصية string
 
|سلسلة نصية string
سطر 146: سطر 144:
 
|}
 
|}
  
==== <code>isPad</code> ‫(iOS) ====
+
===<code>isPad</code>===
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
Platform.isPad;
 
Platform.isPad;
سطر 152: سطر 150:
 
{| class="wikitable"
 
{| class="wikitable"
 
!النوع
 
!النوع
 +
!المنصة
 
|-
 
|-
 
|قيمة منطقية boolean
 
|قيمة منطقية boolean
 +
|iOS
 
|}
 
|}
  
===== <code>isTV</code> =====
+
===<code>isTV</code>===
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
Platform.isTV;
 
Platform.isTV;
سطر 166: سطر 166:
 
|}
 
|}
  
===== <code>isTesting</code> =====
+
===<code>isTesting</code>===
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
Platform.isTesting;
 
Platform.isTesting;
سطر 176: سطر 176:
 
|}
 
|}
  
===== <code>OS</code> =====
+
===<code>OS</code>===
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
static Platform.OS
 
static Platform.OS
سطر 183: سطر 183:
 
!النوع
 
!النوع
 
|-
 
|-
|enum(<code>'android'</code>, <code>'ios'</code>)
+
|('android', 'ios')
 
|}
 
|}
  
===== <code>Version</code> =====
+
===<code>Version</code>===
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
Platform.Version;
 
Platform.Version;
سطر 197: سطر 197:
 
|}
 
|}
  
==== التوابع ====
+
== التوابع ==
  
===== <code>select()‎</code> =====
+
===<code>select()‎</code>===
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
static select(config: object): any
 
static select(config: object): any
سطر 264: سطر 264:
  
 
* [https://reactnative.dev/docs/platform صفحة Platform في توثيق React Native الرسمي.]
 
* [https://reactnative.dev/docs/platform صفحة Platform في توثيق React Native الرسمي.]
 +
[[تصنيف:ReactNative]]
 +
[[تصنيف:ReactNative API]]

مراجعة 13:40، 6 أكتوبر 2021

إليك المثال التالي (تجربة حية):

import React from 'react';
import { Platform, StyleSheet, Text, ScrollView } from 'react-native';

const App = () => {
  return (
    <ScrollView contentContainerStyle={styles.container}>
      <Text>OS</Text>
      <Text style={styles.value}>{Platform.OS}</Text>
      <Text>OS Version</Text>
      <Text style={styles.value}>{Platform.Version}</Text>
      <Text>isTV</Text>
      <Text style={styles.value}>{Platform.isTV.toString()}</Text>
      {Platform.OS === 'ios' && <>
        <Text>isPad</Text>
        <Text style={styles.value}>{Platform.isPad.toString()}</Text>
      </>}
      <Text>Constants</Text>
      <Text style={styles.value}>
        {JSON.stringify(Platform.constants, null, 2)}
      </Text>
    </ScrollView>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
  },
  value: {
    fontWeight: '600',
    padding: 4,
    marginBottom: 8
  }
});

export default App;

الخاصيات

constants

Platform.constants;

تعيد هذه الخاصية كائنًا يحتوي على جميع الثوابت المشتركة والمحددة المتاحة والمتعلقة بالمنصة platform.

خاصيات الكائن:

الاسم النوع اختياري الوصف
isTesting قيمة منطقية boolean لا
reactNativeVersion كائن object لا معلومات حول إصدار React Native. المفاتيح هي major و minor و patch مع prerelease الاختياري والقيم هي أعداد number.
Version

(Android)

عدد number لا ثابت إصدار نظام التشغيل وهو خاص بنظام Android.
Release

(Android)

سلسلة نصية string لا
Serial

(Android)

سلسلة نصية string لا رقم العتاد التسلسلي لجهاز Android.
Fingerprint

(Android)

سلسلة نصية string لا سلسلة نصية تحدد البناء بصورة فريدة.
Model

(Android)

سلسلة نصية string لا اسم المستخدم النهائي المرئي لجهاز Android.
Brand

(Android)

سلسلة نصية string لا علامة المستهلك التجارية المرئية التي سيرتبط المنتج / العتاد بها.
Manufacturer

Android

سلسلة نصية string لا الشركة المصنعة لجهاز Android.
ServerHost

(Android)

سلسلةنصية string نعم
uiMode

(Android)

سلسلة نصية string لا القيم الممكنة: 'car' و 'desk' و 'normal' و 'tv' و 'watch' و 'unknown'. اطّلع على المزيد حول Android ModeType.
forceTouchAvailable

(iOS)

قيمة منطقية boolean لا تحدّد توفر اللمس ثلاثي الأبعاد 3D Touch على الجهاز.
interfaceIdiom

(iOS)

سلسلة نصية string لا نوع واجهة الجهاز. اطّلع على المزيد حول UIUserInterfaceIdiom.
osVersion

(iOS)

سلسلة نصية string لا ثابت إصدار نظام التشغيل وهو خاص بنظام iOS.
systemName

(iOS)

سلسلة نصية string لا ثابت اسم نظام التشغيل وهو خاص بنظام iOS.

isPad

Platform.isPad;

تعيد هذه الخاصية قيمة منطقية تحدد إذا كان الجهاز عبارة عن جهاز iPad.

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

isTV

Platform.isTV;

تعيد هذه الخاصية قيمة منطقية تحدد ما إذا كان الجهاز عبارة عن تلفزيون TV.

النوع
قيمة منطقية boolean

isTesting

Platform.isTesting;

تعيد هذه الخاصية قيمة منطقية تحدد ما إذا كان التطبيق يعمل في وضع المطور مع ضبط راية الاختبار.

النوع
قيمة منطقية boolean

OS

static Platform.OS

تعيد هذه الخاصية قيمة السلسلة النصية التي تمثل نظام التشغيل الحالي.

النوع
('android', 'ios')

Version

Platform.Version;

تعيد هذه الخاصية إصدار نظام التشغيل.

النوع
عدد number في نظام Android
سلسلة نصية string في نظام iOS

التوابع

select()‎

static select(config: object): any

يعيد هذا التابع القيمة الأنسب للمنصة التي تعمل عليها حاليًا.

المعاملات Parameters:

الاسم النوع مطلوب الوصف
config كائن object نعم اطّلع على وصف config أدناه

اختر التابع الذي يعيد القيمة الأنسب للمنصة التي تعمل عليها حاليًا، وهذا يعني أنه إن عملت على هاتف، فستحظى مفاتيح android و ios بالأفضلية. إذا لم تُحدَّد هذه المفاتيح، فسيُستخدَم المفتاح native ثم المفتاح default.

المعامل config هو كائن له المفاتيح التالية:

  • android (نوعه any)
  • ios (نوعه any)
  • native (نوعه any)
  • default (نوعه any)

مثال عن كيفية الاستخدام:

import { Platform, StyleSheet } from 'react-native';

const styles = StyleSheet.create({
  container: {
    flex: 1,
    ...Platform.select({
      android: {
        backgroundColor: 'green'
      },
      ios: {
        backgroundColor: 'red'
      },
      default: {
        // المنصات الأخرى كالويب مثلُا
        backgroundColor: 'blue'
      }
    })
  }
});

سينتج عن ذلك أن تكون الحاوية flex: 1 على جميع المنصات، ولون خلفية أخضر على نظام Android، ولون خلفية أحمر على نظام iOS، ولون خلفية أزرق على المنصات الأخرى. بما أن قيمة مفتاح المنصة المقابل يمكن أن تكون من النوع any، لذلك يمكن أيضًا استخدام التابع select لإعادة المكونات الخاصة بالمنصة كما يلي:

const Component = Platform.select({
  ios: () => require('ComponentIOS'),
  android: () => require('ComponentAndroid')
})();

<Component />;
const Component = Platform.select({
  native: () => require('ComponentForNative'),
  default: () => require('ComponentForWeb')
})();

<Component />;

مصادر