الفرق بين المراجعتين لصفحة: «ReactNative/share»
رقية-بورية (نقاش | مساهمات) ط إزالة الشدة عن عنوان التوابع |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:Share في React Native}}</noinclude> | <noinclude>{{DISPLAYTITLE:الواجهة Share في React Native}}</noinclude> | ||
__toc__ | __toc__ | ||
== مثال == | == مثال == | ||
* مثال لمكوّن دالّة (Function Component Example) | * [https://snack.expo.dev/@hsoubwiki/share-function-component-example مثال لمكوّن دالّة (Function Component Example)] | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
import React from 'react'; | import React from 'react'; | ||
import { Share, View, Button } from 'react-native'; | import { Share, View, Button } from 'react-native'; | ||
const ShareExample = () => { | const ShareExample = () => { | ||
const onShare = async () => { | |||
try { | |||
const result = await Share.share({ | |||
message: | |||
'React Native | A framework for building native apps using React', | |||
}); | |||
if (result.action === Share.sharedAction) { | |||
if (result.activityType) { | |||
// shared with activity type of result.activityType | |||
} else { | |||
// shared | |||
} | |||
} else if (result.action === Share.dismissedAction) { | |||
// dismissed | |||
} | |||
} catch (error) { | |||
alert(error.message); | |||
} | |||
}; | }; | ||
return ( | |||
<View style={{ marginTop: 50 }}> | |||
<Button onPress={onShare} title="Share" /> | |||
</View> | |||
); | ); | ||
}; | }; | ||
export default ShareExample; | export default ShareExample; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* مثال لمكوّن صنف (Class Component Example) | * [https://snack.expo.dev/@hsoubwiki/share-class-component-example مثال لمكوّن صنف (Class Component Example)] | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
import React, { Component } from 'react'; | import React, { Component } from 'react'; | ||
import { Share, View, Button } from 'react-native'; | import { Share, View, Button } from 'react-native'; | ||
class ShareExample extends Component { | class ShareExample extends Component { | ||
onShare = async () => { | |||
try { | |||
const result = await Share.share({ | |||
message: | |||
'React Native | A framework for building native apps using React', | |||
}); | |||
if (result.action === Share.sharedAction) { | |||
if (result.activityType) { | |||
// shared with activity type of result.activityType | |||
} else { | |||
// shared | |||
} | |||
} else if (result.action === Share.dismissedAction) { | |||
// dismissed | |||
} | |||
} catch (error) { | |||
alert(error.message); | |||
} | |||
}; | }; | ||
render() { | |||
return ( | |||
<View style={{ marginTop: 50 }}> | |||
<Button onPress={this.onShare} title="Share" /> | |||
</View> | |||
); | |||
} | } | ||
} | } | ||
export default ShareExample; | export default ShareExample; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
سطر 85: | سطر 84: | ||
</syntaxhighlight>يفتح هذا التّابع مربّع حوارٍ لمشاركة محتوىً نصيٍّ، وعند استخدامه على المنصة iOS، فهو يُعيد وعدًا (Promise) يقبَل بواسطة كائنٍ يحوي مفتاحين <code>action</code>، و<code>activityType</code>، إذا رفض المستخدم مربّع الحوار، فإن الوعد سيستدعى بجعل قيمة المفتاح <code>action</code> مساويةً لـ <code>Share.dismissedAction</code>، مع ترك بقية المفاتيح دون تعريفٍ، إلى جانب ملاحظة أنّ بعض خيارات المشاركة لن تظهر، أو لن تعمل عند العمل على محاكي iOS؛ أمّا عند استخدامه على منصّة Android، فسيُعيد وعدًا يُقبل دائمًا بجعل قيمة المفتاح <code>action</code> مساويةً <code>Share.sharedAction</code>. | </syntaxhighlight>يفتح هذا التّابع مربّع حوارٍ لمشاركة محتوىً نصيٍّ، وعند استخدامه على المنصة iOS، فهو يُعيد وعدًا (Promise) يقبَل بواسطة كائنٍ يحوي مفتاحين <code>action</code>، و<code>activityType</code>، إذا رفض المستخدم مربّع الحوار، فإن الوعد سيستدعى بجعل قيمة المفتاح <code>action</code> مساويةً لـ <code>Share.dismissedAction</code>، مع ترك بقية المفاتيح دون تعريفٍ، إلى جانب ملاحظة أنّ بعض خيارات المشاركة لن تظهر، أو لن تعمل عند العمل على محاكي iOS؛ أمّا عند استخدامه على منصّة Android، فسيُعيد وعدًا يُقبل دائمًا بجعل قيمة المفتاح <code>action</code> مساويةً <code>Share.sharedAction</code>. | ||
= | الخاصيات: | ||
{| class="wikitable" | |||
!الاسم | |||
!النوع | |||
!مطلوب | |||
!الوصف | |||
|- | |||
|<code>content</code> | |||
|كائن | |||
|نعم | |||
|كائن فيه الخاصيات التالية: | |||
* <code>message</code>: الرّسالة المُراد مشاركتها. | * <code>message</code>: الرّسالة المُراد مشاركتها. | ||
* <code>url</code>: ( منصة iOS) رابط (URL) المراد مشاركته، ويتطلّب رابطًا واحدًا، ورسالةً واحدةً على الأقلّ. | |||
* <code>title</code>: (منصة Android) عنوان الرّسالة المُراد مشاركتها. | |||
|- | |||
|<code>options</code> | |||
|كائن | |||
|لا | |||
|كائن فيه الخاصيات التالية: | |||
<code>dialogTitle</code> (منصة Android) | |||
*<code>subject</code>: ( منصة iOS) الموضوع المُراد مشاركته عبر البريد الالكتروني | |||
*<code>excludedActivityTypes</code>: ( منصة iOS) | |||
*<code>tintColor</code>: ( منصة iOS) | |||
|} | |||
==== | == الخاصيات == | ||
=== <code>sharedAction</code> === | === <code>sharedAction</code> === |
مراجعة 09:00، 5 أكتوبر 2021
مثال
import React from 'react';
import { Share, View, Button } from 'react-native';
const ShareExample = () => {
const onShare = async () => {
try {
const result = await Share.share({
message:
'React Native | A framework for building native apps using React',
});
if (result.action === Share.sharedAction) {
if (result.activityType) {
// shared with activity type of result.activityType
} else {
// shared
}
} else if (result.action === Share.dismissedAction) {
// dismissed
}
} catch (error) {
alert(error.message);
}
};
return (
<View style={{ marginTop: 50 }}>
<Button onPress={onShare} title="Share" />
</View>
);
};
export default ShareExample;
import React, { Component } from 'react';
import { Share, View, Button } from 'react-native';
class ShareExample extends Component {
onShare = async () => {
try {
const result = await Share.share({
message:
'React Native | A framework for building native apps using React',
});
if (result.action === Share.sharedAction) {
if (result.activityType) {
// shared with activity type of result.activityType
} else {
// shared
}
} else if (result.action === Share.dismissedAction) {
// dismissed
}
} catch (error) {
alert(error.message);
}
};
render() {
return (
<View style={{ marginTop: 50 }}>
<Button onPress={this.onShare} title="Share" />
</View>
);
}
}
export default ShareExample;
التوابع
static share(content, options)
يفتح هذا التّابع مربّع حوارٍ لمشاركة محتوىً نصيٍّ، وعند استخدامه على المنصة iOS، فهو يُعيد وعدًا (Promise) يقبَل بواسطة كائنٍ يحوي مفتاحين action
، وactivityType
، إذا رفض المستخدم مربّع الحوار، فإن الوعد سيستدعى بجعل قيمة المفتاح action
مساويةً لـ Share.dismissedAction
، مع ترك بقية المفاتيح دون تعريفٍ، إلى جانب ملاحظة أنّ بعض خيارات المشاركة لن تظهر، أو لن تعمل عند العمل على محاكي iOS؛ أمّا عند استخدامه على منصّة Android، فسيُعيد وعدًا يُقبل دائمًا بجعل قيمة المفتاح action
مساويةً Share.sharedAction
.
الخاصيات:
الاسم | النوع | مطلوب | الوصف |
---|---|---|---|
content
|
كائن | نعم | كائن فيه الخاصيات التالية:
|
options
|
كائن | لا | كائن فيه الخاصيات التالية:
|
الخاصيات
static sharedAction
وتعني أنّه قد تمّت مشاركة المحتوى بنجاحٍ.
dismissedAction
static dismissedAction
والمقصود بها أنّه قد تم رفض صندوق الحوار هذا، ويُستخدم على منصّة iOS فقط.