Skip to content

Commit 27b539a

Browse files
authored
to 433
1 parent 96e4d17 commit 27b539a

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

src/content/learn/passing-props-to-a-component.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -185,15 +185,15 @@ function Avatar(props) {
185185

186186
<Pitfall>
187187

188-
**لا تفوت الزوج من `{` و `}` الأقواس المجعدة** داخل `(` و `)` عند إعلان الخصائص:
188+
**لا تنسى زوجي `{` و `}` الأقواس المنحنية** داخل `(` و `)` عند إعلان الخصائص:
189189

190190
```js
191191
function Avatar({ person, size }) {
192192
// ...
193193
}
194194
```
195195

196-
هذه الصيغة تسمى ["تدمير"](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Unpacking_fields_from_objects_passed_as_a_function_parameter) وهي ما تعادل قراءة الخصائص من عامل الدالة:
196+
هذه الصيغة تسمى ["تحليل"](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Unpacking_fields_from_objects_passed_as_a_function_parameter) وهي ما تعادل قراءة الخصائص من عامل الدالة:
197197

198198
```js
199199
function Avatar(props) {
@@ -207,7 +207,7 @@ function Avatar(props) {
207207

208208
## تحديد قيمة افتراضية لخاصية {/*specifying-a-default-value-for-a-prop*/}
209209

210-
إذا كنت تريد إعطاء قيمة افتراضية لخاصية تستخدم عند عدم تحديد قيمة، يمكنك القيام بذلك باستخدام الصيغة التدميرية عن طريق وضع علامة `=` والقيمة الافتراضية مباشرة بعد المعامل:
210+
إذا كنت تريد إعطاء قيمة افتراضية لخاصية تستخدم عند عدم تحديد قيمة، يمكنك القيام بذلك باستخدام الصيغة التحليلية عن طريق وضع علامة `=` والقيمة الافتراضية مباشرة بعد المعامل:
211211

212212
```js
213213
function Avatar({ person, size = 100 }) {
@@ -219,7 +219,7 @@ function Avatar({ person, size = 100 }) {
219219

220220
تُستخدم القيمة الافتراضية فقط إذا كانت خاصية ال`size` مفقودة أو إذا قمت بتمرير `size={undefined}`. ولكن إذا قمت بتمرير `size={null}` أو `size={0}`, **فلن** يتم استخدام القيمة الافتراضية.
221221

222-
## إعادة توجيه الخصائص باستخدام صيغة انتشار JSX {/*forwarding-props-with-the-jsx-spread-syntax*/}
222+
## إعادة توجيه الخصائص باستخدام صيغة الانتشار (spread operator) في JSX {/*forwarding-props-with-the-jsx-spread-syntax*/}
223223

224224
في بعض الأحيان، يصبح تمرير الخصائص مُكررًا جدًا:
225225

@@ -238,7 +238,7 @@ function Profile({ person, size, isSepia, thickBorder }) {
238238
}
239239
```
240240

241-
لا يوجد أي شيء خاطئ في تكرار الكود - بل يمكن أن يزيد من الوضوح. ولكن في بعض الأحيان قد يقدر الاختصار. تقوم بعض المكوّنات بتوجيه جميع خصائصها إلى أطفالها, مثل الطريقة التي يفعل بها `Profile` مع `Avatar`. نظرًا لعدم استخدامها لأي من خصائصها مباشرة ، فقد يكون من المنطقي استخدام صيغة "spread" الأكثر اختصارًا:
241+
لا يوجد أي شيء خاطئ في تكرار الكود - بل يمكن أن يزيد الوضوح. ولكن في بعض الأحيان قد يُفَضّل الاختصار. تقوم بعض المكوّنات بتوجيه جميع خصائصها إلى أطفالها, مثل الطريقة التي يفعل بها `Profile` مع `Avatar`. نظرًا لعدم استخدامها لأي من خصائصها مباشرة، فقد يكون من المنطقي استخدام صيغة الانتشار "spread" الأكثر اختصارًا:
242242

243243
```js
244244
function Profile(props) {
@@ -356,7 +356,7 @@ export function getImageUrl(person, size = 's') {
356356

357357
## كيفية تغيير الخصائص مع مرور الوقت {/*how-props-change-over-time*/}
358358

359-
يتلقى المكوّن `Clock` القادم خاصيتين من مكوّنه الأب: `color` و `time`. (تم حذف كود المكوّن الأب لأنه يستخدم الحالة [state](/learn/state-a-components-memory), التي لن نناقشها بعد.)
359+
يتلقى المكوّن `Clock` القادم خاصيتين من مكوّنه الأب: `color` و `time`. (تم حذف كود المكوّن الأب لأنه يستخدم الحالة [state](/learn/state-a-components-memory), التي لا نريد أن نتعمق فيها الآن.)
360360

361361
جرب تغيير اللون في مربع الاختيار أدناه:
362362

@@ -408,29 +408,29 @@ export default function App() {
408408

409409
</Sandpack>
410410

411-
يوضح هذا المثال أن **يمكن للمكوّن أن يتلقى خصائص مختلفة مع مرور الوقت.** الخصائص ليست دائمًا ثابتة! هنا ، تتغير الخاصية `time` كل ثانية, وتتغير الخاصية `color` عندما تختار لونًا آخر. تعكس الخصائص بيانات المكوّن في أي نقطة من الزمن ، عوضاً عن البدايه فقط.
411+
يوضح هذا المثال أنه **يمكن للمكوّن أن يتلقى خصائص مختلفة مع مرور الوقت.** الخصائص ليست دائمًا ثابتة! هنا، تتغير الخاصية `time` كل ثانية, وتتغير الخاصية `color` عندما تختار لونًا آخر. تعكس الخصائص بيانات المكوّن في أي نقطة من الزمن، عوضاً عن البدايه فقط.
412412

413-
ومع ذلك ، تكون الخصائص [immutable](https://en.wikipedia.org/wiki/Immutable_object)—وهو مصطلح من علم الحوسبة يعني "لا يمكن تغييره". عندما يحتاج المكوّن إلى تغيير خصائصه (على سبيل المثال ، ردًا على تفاعل من المستخدم أو بيانات جديدة), سيضطر إلى "طلب" من مكوّنه الأصلي تمريره _خصائص مختلفة_—كائن جديد! سيتم رفض الخصائص القديمة ثم سيستعيد محرك JavaScript في نهاية المطاف الذاكرة التي استهلكتها.
413+
ومع ذلك ، تكون الخصائص [immutable](https://en.wikipedia.org/wiki/Immutable_object)—وهو مصطلح من علم الحوسبة يعني "لا يمكن تغييره". عندما يحتاج المكوّن إلى تغيير خصائصه (على سبيل المثال، ردًا على تفاعل من المستخدم أو بيانات جديدة), سيضطر إلى "طلب" من مكوّنه الأب تمريره _خصائص مختلفة_—كائن جديد! سيتم رفض الخصائص القديمة ثم سيستعيد محرك JavaScript في نهاية المطاف الذاكرة التي استهلكتها.
414414

415-
**لا تحاول "تغيير الخصائص". ** عندما تحتاج إلى الاستجابة لإدخال المستخدم (مثل تغيير اللون المحدد) ، ستحتاج إلى "تعيين الحالة" ، والتي يمكنك التعرف عليها في [الحالة: ذاكرة المكوّن.](/learn/state-a-components-memory)
415+
**لا تحاول "تغيير الخصائص". ** عندما تحتاج إلى الاستجابة لإدخال المستخدم (مثل تغيير اللون المحدد)، ستحتاج إلى "تعيين الحالة" ، والتي يمكنك التعرف عليها في [الحالة: ذاكرة المكوّن.](/learn/state-a-components-memory)
416416

417417
<Recap>
418418

419-
* لتمرير الخصائص ، أضفها إلى JSX ، تمامًا كما تفعل مع سمات HTML.
420-
* لقراءة الخصائص، استخدم `function Avatar({ person, size })` صيغة تفكيك.
421-
* يمكنك تحديد قيمة افتراضية مثل `size = 100`, التي تُستخدم في الخصائص الناقصة والغير معرفة 'undefined'.
419+
* لتمرير الخصائص، أضفها إلى JSX، تمامًا كما تفعل مع سمات HTML.
420+
* لقراءة الخصائص، استخدم `function Avatar({ person, size })` صيغة تحليل.
421+
* يمكنك تحديد قيمة افتراضية مثل `size = 100`, التي تُستخدم في الخصائص الناقصة وغير المُعرّفة 'undefined'.
422422
* يمكنك توجيه جميع الخصائص باستخدام صيغة الانتشار `<Avatar {...props} />` ، ولكن لا تستخدمها بكثرة!
423423
* JSX المتداخل مثل `<Card><Avatar /></Card>` سيظهر كخاصية `children` للمكوّن `Card`.
424424
* تمثل الخصائص لقطات للقراءة فقط في الوقت: يتلقى كل عرض نسخة جديدة من الخصائص.
425-
* ا يمكنك تغيير الخصائص. عندما تحتاج إلى التفاعلية ، ستحتاج إلى تعيين الحالة.
425+
* لا بمكنك تغيير الخصائص. عندما تحتاج إلى التفاعلية، ستحتاج إلى تعيين الحالة.
426426

427427
</Recap>
428428

429429

430430

431431
<Challenges>
432432

433-
#### إستخراج مكوّن {/*extract-a-component*/}
433+
#### استخراج مكوّن {/*extract-a-component*/}
434434

435435
يحتوي مكوّن `Gallery` هذا على بعض الmarkup المماثلة جدًا لاثنين من الملفات. استخرِج مكوّن ال`Profile` منه لتقليل التكرار. سوف تحتاج إلى اختيار الخصائص التي ستمررها إليه.
436436

0 commit comments

Comments
 (0)