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

من موسوعة حسوب
طلا ملخص تعديل
 
(4 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:الخاصيات في React Native}}</noinclude>
<noinclude>{{DISPLAYTITLE:الخاصيات Props في React Native}}</noinclude>
==الخاصيات (Props)==
يمكن تخصيص معظم المكونات أثناء إنشائها، وذلك باستخدام معاملاتٍ (parameters) مختلفةٍ، تسمى هذه المعاملاتُ بالخاصيّات (properties) ويُرمز إليها بالرمز ‎<code>props</code>‎.
يمكن تخصيص معظم المكونات أثناء إنشائها، وذلك باستخدام معاملات (parameters) مختلفة. تسمى هذه المعاملاتُ بالخاصيّات (properties) ويُرمز إليها بالرمز ‎<code>props</code>‎.


على سبيل المثال، المُكوّن ‎<code>Image</code>‎ أحد مكوّنات React Native الأساسية. عند إنشاء صورة بهذا المكوّن، يمكنك استخدام خاصيّة باسم ‎<code>source</code>‎ للتحكم في الصورة التي تريد عرضها عبر تمرير مصدرها كقيمة للخاصيّة:
على سبيل المثال، المُكوّن [[ReactNative/image|‎<code>Image</code>‎]] أحد مكوّنات React Native الأساسية، عند إنشاء صورة بهذا المكوّن يمكن استخدام خاصيّةٍ باسم ‎<code>source</code>‎ للتحكم في الصورة التي تريد عرضها عبر تمرير مصدرها كقيمة للخاصيّة ([https://snack.expo.dev/@hsoubwiki/props تجربة حية للمثال التالي]):
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
import React, { Component } from 'react';
import React from 'react';
import { AppRegistry, Image } from 'react-native';
import { Image } from 'react-native';


export default class Bananas extends Component {
const Bananas = () => {
  render() {
     let pic = {
     let pic = {
       uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg'
       uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg'
     };
     };
     return (
     return (
       <Image source={pic} style={{width: 193, height: 110}}/>
       <Image source={pic} style={{width: 193, height: 110, marginTop:50}}/>
     );
     );
  }
}
}


// تخطّ هذا السطر إن كنت تستعمل أداة
export default Bananas;
// Create React Native App
AppRegistry.registerComponent('AwesomeProject', () => Bananas);
</syntaxhighlight>
</syntaxhighlight>
لاحظ الأقواس المعقوفة التي تُحيط ‎<code>{pic}</code>‎، تُضمِّن هذه الأقواس المتغيرَ ‎<code>pic</code>‎ في JSX. يمكنك وضع أي تعبير JavaScript داخل الأقواس في JSX.
لاحظ الأقواس المعقوفة التي تُحيط ‎<code>{pic}</code>‎، تُضمِّن هذه الأقواس المتغيرَ ‎<code>pic</code>‎ في JSX. يمكنك وضع أي تعبير JavaScript داخل الأقواس في JSX.


يمكن استخدام ‎<code>props</code>‎ في المكونات الخاصة بك كذلك. ما يتيح لك إنشاء مكوّن واحد قابل للاستعمال في عدّة أماكن مختلفة في تطبيقك، مع تخصيص الخاصيات لتكون مختلفة حسب رغبتك. يمكنك الوصول إلى المُعاملات التي تُمرَّر إلى مُكوِّنك كخاصيّات عبر ‎الإحالة إلى <code>this.props</code>‎ في دالّة ‎<code>render</code>‎ الخاصة بالمكوّن. مثلًا:
يمكن استخدام ‎<code>props</code>‎ في المكوّنات الخاصة بك كذلك. مما يتيح لك إنشاء مكوّنٍ واحدٍ قابلٍ للاستعمال في عدّة أماكن مختلفةٍ في تطبيقك، مع تخصيص الخاصّيات لتكون مختلفةً حسب رغبتك. يمكنك الوصول إلى المُعاملات التي تُمرَّر إلى مُكوِّنك كخاصيّات عبر ‎الإحالة إلى <code>props</code>‎ في دالّة ‎<code>render</code>‎ الخاصة بالمكوّن. انظر المثال التالي ([https://snack.expo.dev/@hsoubwiki/props2 تجربة حية]):
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
import React, { Component } from 'react';
import React, { Component } from 'react';
import { AppRegistry, Text, View } from 'react-native';
import { AppRegistry, Text, View } from 'react-native';


class Greeting extends Component {
import React from 'react';
  render() {
import { Text, View } from 'react-native';
 
const Greeting = (props) => {
     return (
     return (
       <View style={{alignItems: 'center'}}>
       <View style={{alignItems: 'center'}}>
         <Text>Hello {this.props.name}!</Text>
         <Text>Hello {props.name}!</Text>
       </View>
       </View>
     );
     );
  }
}
}


export default class LotsOfGreetings extends Component {
export default LotsOfGreetings = () => {
  render() {
     return (
     return (
       <View style={{alignItems: 'center'}}>
       <View style={{alignItems: 'center', top: 50}}>
         <Greeting name='Rexxar' />
         <Greeting name='Rexxar' />
         <Greeting name='Jaina' />
         <Greeting name='Jaina' />
سطر 49: سطر 44:
       </View>
       </View>
     );
     );
  }
}
}
// تخطّ هذا السطر إن كنت تستعمل أداة
// Create React Native App
AppRegistry.registerComponent('AwesomeProject', () => LotsOfGreetings);
</syntaxhighlight>
</syntaxhighlight>
يُمكن تخصيص ما يعرضه المكوّن ‎<code>Greeting</code>‎ باستخدام ‎<code>name</code>‎ كخاصيّة، لذا تمكّنّا من إعادة استخدام هذا المكون في كل مرّة باسم مختلف. يستخدم هذا المثال أيضًا المكوّن ‎<code>Greeting</code>‎ الذي أنشأناه في JSX تمامًا كما نستخدم المكونات المُضمَّنَة. هذا ما يجعل React مكتبة مذهلة، فإذا وجدت أنّك بحاجة إلى مجموعة مختلفة من المكوّنات الأولية في واجهة المستخدم التي تبنيها، فكلّ ما عليك فعله هو اختراع مكوّنات أخرى جديدة واستعمالها تمامًا مثل تلك المتوفّرة افتراضيًّا.
يُمكن تخصيص ما يعرضه المكوّن ‎<code>Greeting</code>‎ باستخدام ‎<code>name</code>‎ كخاصيّة، لذا تمكّنّا من إعادة استخدام هذا المكون باسمٍ مختلفٍ في كل مرّة، يستخدم هذا المثال أيضًا المكوّن ‎<code>Greeting</code>‎ الذي أنشأناه في JSX تمامًا كما نستخدم المكونات المُضمَّنَة، وهذا ما يجعل React مكتبةً مذهلةً، فإذا وجدت أنّك بحاجةٍ إلى مجموعةٍ مختلفةٍ من المكوّنات الأولية في واجهة المستخدم التي تبنيها، فكلّ ما عليك فعله هو اختراع مكوّنات أخرى جديدة واستعمالها تمامًا مثل تلك المتوفّرة افتراضيًّا.


الشيء الجديد الآخر هنا هو المكوّن ‎<code>View</code>‎. وهو مكوّن مفيدٌ يعمل كحاوية لاحتواء المكونات الأخرى للتحكم في تنسيقها وتخطيطها.
الشيء الجديد الآخر هنا هو المكوّن ‎<code>[[ReactNative/view|View]]</code>‎. وهو مكوّن مفيدٌ يعمل كحاويةٍ لاحتواء المكوّنات الأخرى للتحكم في تنسيقها وتخطيطها.


يمكنك إنشاء مجموعة متنوعة من الشاشات الثابتة (static screens) باستعمال الخاصيّات وما تعلّمته حتى الآن من مكوّنات أساسيّة مثل ‎<code>Text</code>‎، و‎<code>Image</code>‎، و‎<code>View</code>‎. لمعرفة كيفية جعل تطبيقك يتغيّر بمرور الوقت، ستحتاج إلى تعلّم كيفيّة التعامل مع الحالة.
يمكنك إنشاء مجموعةٍ متنوعةٍ من الشاشات الثابتة (static screens) باستعمال الخاصيّات وما تعلّمته حتى الآن من مكوّناتٍ أساسيّةٍ مثل [[ReactNative/text|‎<code>Text</code>‎]]، و‎<code>[[ReactNative/image|Image]]</code>‎، و‎<code>[[ReactNative/view|View]]</code>‎. لمعرفة كيفية جعل تطبيقك يتغيّر بمرور الوقت، ستحتاج إلى تعلّم [[ReactNative/state|كيفيّة التعامل مع الحالة]].


== مصادر ==
== مصادر ==
* [https://facebook.github.io/react-native/docs/props صفحة Props في توثيق React Native الرسمي.]
* [https://facebook.github.io/react-native/docs/props صفحة Props في توثيق React Native الرسميّ]
[[تصنيف:ReactNative]]
[[تصنيف:ReactNative]]
[[تصنيف:React Native Docs]]

المراجعة الحالية بتاريخ 14:52، 9 أكتوبر 2021

يمكن تخصيص معظم المكونات أثناء إنشائها، وذلك باستخدام معاملاتٍ (parameters) مختلفةٍ، تسمى هذه المعاملاتُ بالخاصيّات (properties) ويُرمز إليها بالرمز ‎props‎.

على سبيل المثال، المُكوّن Image أحد مكوّنات React Native الأساسية، عند إنشاء صورة بهذا المكوّن يمكن استخدام خاصيّةٍ باسم ‎source‎ للتحكم في الصورة التي تريد عرضها عبر تمرير مصدرها كقيمة للخاصيّة (تجربة حية للمثال التالي):

import React from 'react';
import { Image } from 'react-native';

const Bananas = () => {
    let pic = {
      uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg'
    };
    return (
      <Image source={pic} style={{width: 193, height: 110, marginTop:50}}/>
    );
}

export default Bananas;

لاحظ الأقواس المعقوفة التي تُحيط ‎{pic}‎، تُضمِّن هذه الأقواس المتغيرَ ‎pic‎ في JSX. يمكنك وضع أي تعبير JavaScript داخل الأقواس في JSX.

يمكن استخدام ‎props‎ في المكوّنات الخاصة بك كذلك. مما يتيح لك إنشاء مكوّنٍ واحدٍ قابلٍ للاستعمال في عدّة أماكن مختلفةٍ في تطبيقك، مع تخصيص الخاصّيات لتكون مختلفةً حسب رغبتك. يمكنك الوصول إلى المُعاملات التي تُمرَّر إلى مُكوِّنك كخاصيّات عبر ‎الإحالة إلى props‎ في دالّة ‎render‎ الخاصة بالمكوّن. انظر المثال التالي (تجربة حية):

import React, { Component } from 'react';
import { AppRegistry, Text, View } from 'react-native';

import React from 'react';
import { Text, View } from 'react-native';

const Greeting = (props) => {
    return (
      <View style={{alignItems: 'center'}}>
        <Text>Hello {props.name}!</Text>
      </View>
    );
}

export default LotsOfGreetings = () => {
    return (
      <View style={{alignItems: 'center', top: 50}}>
        <Greeting name='Rexxar' />
        <Greeting name='Jaina' />
        <Greeting name='Valeera' />
      </View>
    );
}

يُمكن تخصيص ما يعرضه المكوّن ‎Greeting‎ باستخدام ‎name‎ كخاصيّة، لذا تمكّنّا من إعادة استخدام هذا المكون باسمٍ مختلفٍ في كل مرّة، يستخدم هذا المثال أيضًا المكوّن ‎Greeting‎ الذي أنشأناه في JSX تمامًا كما نستخدم المكونات المُضمَّنَة، وهذا ما يجعل React مكتبةً مذهلةً، فإذا وجدت أنّك بحاجةٍ إلى مجموعةٍ مختلفةٍ من المكوّنات الأولية في واجهة المستخدم التي تبنيها، فكلّ ما عليك فعله هو اختراع مكوّنات أخرى جديدة واستعمالها تمامًا مثل تلك المتوفّرة افتراضيًّا.

الشيء الجديد الآخر هنا هو المكوّن ‎View‎. وهو مكوّن مفيدٌ يعمل كحاويةٍ لاحتواء المكوّنات الأخرى للتحكم في تنسيقها وتخطيطها.

يمكنك إنشاء مجموعةٍ متنوعةٍ من الشاشات الثابتة (static screens) باستعمال الخاصيّات وما تعلّمته حتى الآن من مكوّناتٍ أساسيّةٍ مثل Text، و‎Image‎، و‎View‎. لمعرفة كيفية جعل تطبيقك يتغيّر بمرور الوقت، ستحتاج إلى تعلّم كيفيّة التعامل مع الحالة.

مصادر