الفرق بين المراجعتين لصفحة: «ReactNative/platform»
أنشأ الصفحة ب'== المكوّن Platform == === مثال عن واجهة برمجة تطبيقات المكوّن Platform === <syntaxhighlight lang="javascript"> import React from '...' |
لا ملخص تعديل |
||
سطر 147: | سطر 147: | ||
==== <code>isPad</code> (iOS) ==== | ==== <code>isPad</code> (iOS) ==== | ||
<syntaxhighlight lang="javascript"> | |||
Platform.isPad; | |||
</syntaxhighlight>تعيد هذه الخاصية قيمة بوليانية تحدد إذا كان الجهاز عبارة عن جهاز iPad. | |||
{| class="wikitable" | |||
!النوع | |||
|- | |||
|بولياني boolean | |||
|} | |||
===== <code>isTV</code> ===== | |||
<syntaxhighlight lang="javascript"> | |||
Platform.isTV; | |||
</syntaxhighlight>تعيد هذه الخاصية قيمة بوليانية تحدد ما إذا كان الجهاز عبارة عن تلفزيون TV. | |||
{| class="wikitable" | |||
!النوع | |||
|- | |||
|بولياني boolean | |||
|} | |||
===== <code>isTesting</code> ===== | |||
<syntaxhighlight lang="javascript"> | |||
Platform.isTesting; | |||
</syntaxhighlight>تعيد هذه الخاصية قيمة بوليانية تحدد ما إذا كان التطبيق يعمل في وضع المطور مع ضبط راية الاختبار. | |||
{| class="wikitable" | |||
!النوع | |||
|- | |||
|بولياني boolean | |||
|} | |||
===== <code>OS</code> ===== | |||
<syntaxhighlight lang="javascript"> | |||
static Platform.OS | |||
</syntaxhighlight>تعيد هذه الخاصية قيمة السلسلة التي تمثل نظام التشغيل الحالي. | |||
{| class="wikitable" | |||
!النوع | |||
|- | |||
|enum(<code>'android'</code>, <code>'ios'</code>) | |||
|} | |||
===== <code>Version</code> ===== | |||
<syntaxhighlight lang="javascript"> | |||
Platform.Version; | |||
</syntaxhighlight>تعيد هذه الخاصية إصدار نظام التشغيل. | |||
{| class="wikitable" | |||
!النوع | |||
|- | |||
|رقم number في نظام Android | |||
----سلسلة string في نظام iOS | |||
|} | |||
==== التوابع ==== | |||
===== <code>select()</code> ===== | |||
<syntaxhighlight lang="javascript"> | |||
static select(config: object): any | |||
</syntaxhighlight>يعيد هذا التابع القيمة الأنسب للمنصة التي تعمل عليها حاليًا. | |||
'''المعاملات Parameters''': | |||
{| class="wikitable" | |||
!الاسم | |||
!النوع | |||
!مطلوب | |||
!الوصف | |||
|- | |||
|config | |||
|كائن object | |||
|نعم | |||
|اطّلع على وصف config أدناه | |||
|} | |||
اختر التابع الذي يعيد القيمة الأنسب للمنصة التي تعمل عليها حاليًا، وهذا يعني أنه إن عملت على هاتف، فستحظى مفاتيح <code>android</code> و <code>ios</code> بالأفضلية. إذا لم تُحدَّد هذه المفاتيح، فسيُستخدَم المفتاح <code>native</code> ثم المفتاح <code>default</code>. | |||
المعامل <code>config</code> هو كائن له المفاتيح التالية: | |||
* <code>android</code> (نوعه any) | |||
* <code>ios</code> (نوعه any) | |||
* <code>native</code> (نوعه any) | |||
* <code>default</code> (نوعه any) | |||
'''مثال عن كيفية الاستخدام''':<syntaxhighlight lang="javascript"> | |||
import { Platform, StyleSheet } from 'react-native'; | |||
const styles = StyleSheet.create({ | |||
container: { | |||
flex: 1, | |||
...Platform.select({ | |||
android: { | |||
backgroundColor: 'green' | |||
}, | |||
ios: { | |||
backgroundColor: 'red' | |||
}, | |||
default: { | |||
// other platforms, web for example | |||
backgroundColor: 'blue' | |||
} | |||
}) | |||
} | |||
}); | |||
</syntaxhighlight>سينتج عن ذلك أن تكون الحاوية <code>flex: 1</code> على جميع المنصات، ولون خلفية أخضر على نظام Android، ولون خلفية أحمر على نظام iOS، ولون خلفية أزرق على المنصات الأخرى. بما أن قيمة مفتاح المنصة المقابل يمكن أن تكون من النوع <code>any</code>، لذلك يمكن أيضًا استخدام التابع <code>select</code> لإعادة المكونات الخاصة بالمنصة كما يلي:<syntaxhighlight lang="javascript"> | |||
const Component = Platform.select({ | |||
ios: () => require('ComponentIOS'), | |||
android: () => require('ComponentAndroid') | |||
})(); | |||
<Component />; | |||
</syntaxhighlight><syntaxhighlight lang="javascript"> | |||
const Component = Platform.select({ | |||
native: () => require('ComponentForNative'), | |||
default: () => require('ComponentForWeb') | |||
})(); | |||
<Component />; | |||
</syntaxhighlight> | |||
== مصادر == | |||
* [https://reactnative.dev/docs/platform صفحة Platform في توثيق React Native الرسمي.] |
مراجعة 23:11، 21 يونيو 2021
المكوّن Platform
مثال عن واجهة برمجة تطبيقات المكوّن Platform
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;
الخصائص Properties
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
(iOS)
Platform.isPad;
تعيد هذه الخاصية قيمة بوليانية تحدد إذا كان الجهاز عبارة عن جهاز iPad.
النوع |
---|
بولياني boolean |
isTV
Platform.isTV;
تعيد هذه الخاصية قيمة بوليانية تحدد ما إذا كان الجهاز عبارة عن تلفزيون TV.
النوع |
---|
بولياني boolean |
isTesting
Platform.isTesting;
تعيد هذه الخاصية قيمة بوليانية تحدد ما إذا كان التطبيق يعمل في وضع المطور مع ضبط راية الاختبار.
النوع |
---|
بولياني boolean |
OS
static Platform.OS
تعيد هذه الخاصية قيمة السلسلة التي تمثل نظام التشغيل الحالي.
النوع |
---|
enum('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: {
// other platforms, web for example
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 />;