You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/learn/javascript-in-jsx-with-curly-braces.md
+67-67Lines changed: 67 additions & 67 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,8 +28,8 @@ export default function Avatar() {
28
28
return (
29
29
<img
30
30
className="avatar"
31
-
src="https://i.imgur.com/7vQD0fPs.jpg"
32
-
alt="غريغوريو واي زارا"
31
+
src="https://i.imgur.com/NpGVLas.jpg"
32
+
alt="نجيب محفوظ"
33
33
/>
34
34
);
35
35
}
@@ -41,16 +41,16 @@ export default function Avatar() {
41
41
42
42
</Sandpack>
43
43
44
-
هنا، يتم تمرير `"https://i.imgur.com/7vQD0fPs.jpg"` و `"غريغوريو واي زارا"` كنصوص.
44
+
هنا، يتم تمرير `"https://i.imgur.com/NpGVLas.jpg"` و `"نجيب محفوظ"` كنصوص.
45
45
46
46
ولكن ماذا لو كنت ترغب في تحديد `src` أو نص `alt` بشكل ديناميكي؟ يمكنك **استخدام قيمة من JavaScript عن طريق استبدال `"`و `"` بـ `{`و `}`**:
47
47
48
48
<Sandpack>
49
49
50
50
```js
51
51
exportdefaultfunctionAvatar() {
52
-
constavatar='https://i.imgur.com/7vQD0fPs.jpg';
53
-
constdescription='غريغوريو واي زارا';
52
+
constavatar='https://i.imgur.com/NpGVLas.jpg';
53
+
constdescription='نجيب محفوظ';
54
54
return (
55
55
<img
56
56
className="avatar"
@@ -77,7 +77,7 @@ JSX هي طريقة خاصة لكتابة JavaScript. وهذا يعني أنه
77
77
78
78
```js
79
79
exportdefaultfunctionTodoList() {
80
-
constname='غريغوريو واي زارا';
80
+
constname='نجيب محفوظ';
81
81
return (
82
82
<h1>قائمة مهام {name}</h1>
83
83
);
@@ -86,7 +86,7 @@ export default function TodoList() {
86
86
87
87
</Sandpack>
88
88
89
-
حاول تغيير قيمة `name` من `'غريغوريو واي زارا'` إلى `'هايدي لامار'`. لاحظ كيف يتغير عنوان القائمة؟
89
+
حاول تغيير قيمة `name` من `'نجيب محفوظ'` إلى `'أحمد زويل'`. لاحظ كيف يتغير عنوان القائمة؟
90
90
91
91
أي تعبير JavaScript سيعمل بين الأقواس المنحنية، بما في ذلك استدعاءات الدوال مثل `formatDate()`:
92
92
<Sandpack>
@@ -96,7 +96,7 @@ const today = new Date();
96
96
97
97
functionformatDate(date) {
98
98
returnnewIntl.DateTimeFormat(
99
-
'en-US',
99
+
'ar-EG',
100
100
{ weekday:'long' }
101
101
).format(date);
102
102
}
@@ -114,12 +114,12 @@ export default function TodoList() {
114
114
115
115
يمكنك استخدام الأقواس المنحنية في JSX بطريقتين فقط:
116
116
117
-
1.**كنص** مباشرة داخل وسم JSX: `<h1>{name}'s قائمة المهام</h1>` يعمل، ولكن `<{tag}>قائمة المهام لـغريغوريو واي زارا </{tag}>` لن يعمل.
117
+
1.**كنص** مباشرة داخل وسم JSX: `<h1>{name}لـ قائمة المهام</h1>` يعمل، ولكن `<{tag}>قائمة المهام لـنجيب محفوظ </{tag}>` لن يعمل.
118
118
2.**كخصائص** تأتي فورًا بعد علامة `=`: `src={avatar}` ستقرأ قيمة المتغير `avatar`، ولكن `src="{avatar}"` ستمرره `"{avatar}"` كنص.
119
119
120
120
## استخدام "أقواس منحنية مزدوجة": CSS وكائنات أخرى داخل JSX {/*using-double-curlies-css-and-other-objects-in-jsx*/}
121
121
122
-
بالإضافة إلى النصوص والأرقام وتعابير JavaScript الأخرى، يمكنك تمرير الكائنات في JSX. يتم تمييز الكائنات أيضًا بواسطة الأقواس المنحنية، مثل `{ name: "هايدي لامار", inventions: 5 }`. لذلك، لتمرير كائن JavaScript في JSX، يجب عليك إحاطة الكائن بزوج آخر من الأقواس المنحنية: `person={{ name: "هايدي لامار", inventions: 5 }}`.
122
+
بالإضافة إلى النصوص والأرقام وتعابير JavaScript الأخرى، يمكنك تمرير الكائنات في JSX. يتم تمييز الكائنات أيضًا بواسطة الأقواس المنحنية، مثل `{ name: "أحمد زويل", inventions: 5 }`. لذلك، لتمرير كائن JavaScript في JSX، يجب عليك إحاطة الكائن بزوج آخر من الأقواس المنحنية: `person={{ name: "أحمد زويل", inventions: 5 }}`.
123
123
124
124
قد ترى ذلك في أنماط CSS المضمنة فيJSX. React لا تتطلب منك استخدام أنماط CSS مضمنة (فئة CSS يعمل جيداً في معظم الحالات). ولكن عندما تحتاج إلى أسلوب مضمن، يمكنك تمرير كائن إلى خاصية `style`:
125
125
@@ -132,9 +132,9 @@ export default function TodoList() {
132
132
backgroundColor:'black',
133
133
color:'pink'
134
134
}}>
135
-
<li>تحسين الهاتف</li>
136
-
<li>تجهيز محاضرات عن الطيران</li>
137
-
<li>العمل على محرك بالوقود الكحولي</li>
135
+
<li>كتابة روايات وأعمال أدبية</li>
136
+
<li>الدفاع عن الحرية الأدبية والتعبير</li>
137
+
<li>تعزيز الوعي الثقافي والأدبي</li>
138
138
</ul>
139
139
);
140
140
}
@@ -176,7 +176,7 @@ ul { padding: 20px 20px 20px 40px; margin: 0; }
176
176
177
177
```js
178
178
constperson= {
179
-
name:'غريغوريو واي زارا',
179
+
name:'نجيب محفوظ',
180
180
theme: {
181
181
backgroundColor:'black',
182
182
color:'pink'
@@ -186,16 +186,16 @@ const person = {
186
186
exportdefaultfunctionTodoList() {
187
187
return (
188
188
<div style={person.theme}>
189
-
<h1>{person.name}'s Todos</h1>
189
+
<h1>مهام {person.name}</h1>
190
190
<img
191
191
className="avatar"
192
-
src="https://i.imgur.com/7vQD0fPs.jpg"
193
-
alt="غريغوريو واي زارا"
192
+
src="https://i.imgur.com/NpGVLas.jpg"
193
+
alt="نجيب محفوظ"
194
194
/>
195
195
<ul>
196
-
<li>تحسين الهاتف</li>
197
-
<li>تجهيز محاضرات عن الطيران</li>
198
-
<li>العمل على محرك بالوقود الكحولي</li>
196
+
<li>كتابة روايات وأعمال أدبية</li>
197
+
<li>الدفاع عن الحرية الأدبية والتعبير</li>
198
+
<li>تعزيز الوعي الثقافي والأدبي</li>
199
199
</ul>
200
200
</div>
201
201
);
@@ -214,7 +214,7 @@ body > div > div { padding: 20px; }
214
214
215
215
```js
216
216
constperson= {
217
-
name: 'غريغوريو واي زارا',
217
+
name:'نجيب محفوظ',
218
218
theme: {
219
219
backgroundColor:'black',
220
220
color:'pink'
@@ -252,7 +252,7 @@ JSXهي لغة قوالب بسيطة جدًا لأنها تسمح لك بتنظ
252
252
253
253
```js
254
254
constperson= {
255
-
name: 'غريغوريو واي زارا',
255
+
name:'نجيب محفوظ',
256
256
theme: {
257
257
backgroundColor:'black',
258
258
color:'pink'
@@ -262,16 +262,16 @@ const person = {
262
262
exportdefaultfunctionTodoList() {
263
263
return (
264
264
<div style={person.theme}>
265
-
<h1>{person}'s Todos</h1>
265
+
<h1>مهام {person}</h1>
266
266
<img
267
267
className="avatar"
268
-
src="https://i.imgur.com/7vQD0fPs.jpg"
268
+
src="https://i.imgur.com/NpGVLas.jpg"
269
269
alt="Gregorio Y. Zara"
270
270
/>
271
271
<ul>
272
-
<li>تحسين الهاتف</li>
273
-
<li>تجهيز محاضرات عن الطيران</li>
274
-
<li>العمل على محرك بالوقود الكحولي</li>
272
+
<li>كتابة روايات وأعمال أدبية</li>
273
+
<li>الدفاع عن الحرية الأدبية والتعبير</li>
274
+
<li>تعزيز الوعي الثقافي والأدبي</li>
275
275
</ul>
276
276
</div>
277
277
);
@@ -300,7 +300,7 @@ body > div > div { padding: 20px; }
300
300
301
301
```js
302
302
constperson= {
303
-
name:'غريغوريو واي زارا',
303
+
name:'نجيب محفوظ',
304
304
theme: {
305
305
backgroundColor:'black',
306
306
color:'pink'
@@ -310,16 +310,16 @@ const person = {
310
310
exportdefaultfunctionTodoList() {
311
311
return (
312
312
<div style={person.theme}>
313
-
<h1>{person.name}'s Todos</h1>
313
+
<h1>مهام {person.name}</h1>
314
314
<img
315
315
className="avatar"
316
-
src="https://i.imgur.com/7vQD0fPs.jpg"
317
-
alt="غريغوريو واي زارا"
316
+
src="https://i.imgur.com/NpGVLas.jpg"
317
+
alt="نجيب محفوظ"
318
318
/>
319
319
<ul>
320
-
<li>تحسين الهاتف</li>
321
-
<li>تجهيز محاضرات عن الطيران</li>
322
-
<li>العمل على محرك بالوقود الكحولي</li>
320
+
<li>كتابة روايات وأعمال أدبية</li>
321
+
<li>الدفاع عن الحرية الأدبية والتعبير</li>
322
+
<li>تعزيز الوعي الثقافي والأدبي</li>
323
323
</ul>
324
324
</div>
325
325
);
@@ -344,7 +344,7 @@ body > div > div { padding: 20px; }
344
344
345
345
```js
346
346
constperson= {
347
-
name: 'غريغوريو واي زارا',
347
+
name:'نجيب محفوظ',
348
348
theme: {
349
349
backgroundColor:'black',
350
350
color:'pink'
@@ -354,16 +354,16 @@ const person = {
354
354
exportdefaultfunctionTodoList() {
355
355
return (
356
356
<div style={person.theme}>
357
-
<h1>{person.name}'s Todos</h1>
357
+
<h1>مهام {person.name}</h1>
358
358
<img
359
359
className="avatar"
360
-
src="https://i.imgur.com/7vQD0fPs.jpg"
361
-
alt="غريغوريو واي زارا"
360
+
src="https://i.imgur.com/NpGVLas.jpg"
361
+
alt="نجيب محفوظ"
362
362
/>
363
363
<ul>
364
-
<li>تحسين الهاتف</li>
365
-
<li>تجهيز محاضرات عن الطيران</li>
366
-
<li>العمل على محرك بالوقود الكحولي</li>
364
+
<li>كتابة روايات وأعمال أدبية</li>
365
+
<li>الدفاع عن الحرية الأدبية والتعبير</li>
366
+
<li>تعزيز الوعي الثقافي والأدبي</li>
367
367
</ul>
368
368
</div>
369
369
);
@@ -386,8 +386,8 @@ body > div > div { padding: 20px; }
386
386
387
387
```js
388
388
constperson= {
389
-
name:'غريغوريو واي زارا',
390
-
imageUrl:"https://i.imgur.com/7vQD0fPs.jpg",
389
+
name:'نجيب محفوظ',
390
+
imageUrl:"https://i.imgur.com/NpGVLas.jpg",
391
391
theme: {
392
392
backgroundColor:'black',
393
393
color:'pink'
@@ -397,16 +397,16 @@ const person = {
397
397
exportdefaultfunctionTodoList() {
398
398
return (
399
399
<div style={person.theme}>
400
-
<h1>{person.name}'s Todos</h1>
400
+
<h1>مهام {person.name}</h1>
401
401
<img
402
402
className="avatar"
403
403
src={person.imageUrl}
404
-
alt="غريغوريو واي زارا"
404
+
alt="نجيب محفوظ"
405
405
/>
406
406
<ul>
407
-
<li>تحسين الهاتف</li>
408
-
<li>تجهيز محاضرات عن الطيران</li>
409
-
<li>العمل على محرك بالوقود الكحولي</li>
407
+
<li>كتابة روايات وأعمال أدبية</li>
408
+
<li>الدفاع عن الحرية الأدبية والتعبير</li>
409
+
<li>تعزيز الوعي الثقافي والأدبي</li>
410
410
</ul>
411
411
</div>
412
412
);
@@ -427,7 +427,7 @@ body > div > div { padding: 20px; }
427
427
428
428
في الكائن أدناه، يتم تقسيم العنوان الكامل للصورة إلى أربعة أجزاء: العنوان الأساس و`imageId` و`imageSize` وامتداد الملف.
429
429
430
-
نريد أن يتم دمج عنوان URL للصورة باستخدام هذه الخصائص معًا: العنوان الأساس (دائمًا `'https://i.imgur.com/'`) و`imageId` (`'7vQD0fP'`) و `imageSize` (`'s'`)، وامتداد الملف (دائمًا `'.jpg'`). ومع ذلك، هناك خطأ في كيفية تحديد الوسم `<img>` لخاصية `src` الخاصة به.
430
+
نريد أن يتم دمج عنوان URL للصورة باستخدام هذه الخصائص معًا: العنوان الأساس (دائمًا `'https://i.imgur.com/'`) و`imageId` (`'NpGVLas'`) و `imageSize` (`'s'`)، وامتداد الملف (دائمًا `'.jpg'`). ومع ذلك، هناك خطأ في كيفية تحديد الوسم `<img>` لخاصية `src` الخاصة به.
431
431
432
432
هل يمكنك إصلاح الخطأ؟
433
433
@@ -437,8 +437,8 @@ body > div > div { padding: 20px; }
0 commit comments