Skip to content

Commit 9154fa4

Browse files
committed
fix: 🐛 final edits, remove bugs
1 parent ae78bc9 commit 9154fa4

File tree

1 file changed

+21
-23
lines changed

1 file changed

+21
-23
lines changed

src/content/learn/conditional-rendering.md

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ title: رندر‌کردن شرطی
33
---
44

55
<Intro>
6+
67
<div dir="rtl">
78

8-
کامپوننت‌های شما معمولا بسته به شرایط مختلف نیاز به نمایش چیزهای مختلفی دارند. در ری‌اکت، می‌توانید ‌JSX را با سینتکس جاوااسکریپت با استفاده از دستوراتی مانند `if`،‌ `&&`،‌و `? :` به صورت شرطی رندر کنید.
9+
کامپوننت‌های شما معمولا بسته به شرایط مختلف نیاز به نمایش چیزهای مختلفی دارند. در ری‌اکت، می‌توانید ‌JSX را با سینتکس جاوااسکریپت با استفاده از دستوراتی مانند `if`،‌ `&&`،‌ و `? :` به صورت شرطی رندر کنید.
910

1011
</div>
1112
</Intro>
@@ -14,7 +15,7 @@ title: رندر‌کردن شرطی
1415
<YouWillLearn>
1516

1617
* نحوه برگرداندن JSX های مختلف بسته به یک شرط
17-
* نحوه گنجاندن یا حذف مشروط یک قطعه از JSX
18+
* نحوه گنجاندن یا حذف کردن شرطی یک قطعه از JSX
1819
* میانبرهای سینتکسی شرطی رایج که در کد‌های ری‌اکت با آنها مواجه خواهید شد
1920

2021
</YouWillLearn>
@@ -64,7 +65,7 @@ export default function PackingList() {
6465
6566
توجه داشته باشید که برای برخی از کامپوننت‌های props ،`isPacked` آن ها به جای true ،false داده شده است. شما می‌خواهید اگر `isPacked={true}` باشد، یک علامت (✔) به موارد بسته‌بندی شده اضافه کنید.
6667
67-
می توانید این را به عنوان یک عبارت [`if`/`else` statement](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else) بنویسید:
68+
می توانید این را به عنوان یک عبارت <span dir="ltr">[`if`/`else` statement](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else)</span> بنویسید:
6869
6970
</div>
7071
@@ -217,7 +218,7 @@ return <li className="item">{name}</li>;
217218
218219
<div dir="rtl">
219220
220-
اگرچه این تکرار مضر نیست، اما می‌تواند نگهداری کد شما را سخت‌تر کند. اگر بخواهید `className` را تغییر دهید چه؟ شما باید این کار را در دو مکان از کد خود انجام دهید! در چنین شرایطی، می‌توانید به صورت شرطی، کمی JSX اضافه کنید تا کدتان بیشتر [DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) شود.
221+
اگرچه این تکرار مضر نیست، اما می‌تواند نگهداری کد شما را سخت‌تر کند. اگر بخواهید `className` را تغییر دهید چه؟ شما باید این کار را در دو جا از کد خود انجام دهید! در چنین شرایطی، می‌توانید به صورت شرطی، کمی JSX اضافه کنید تا کدتان بیشتر [DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) شود.
221222
222223
</div>
223224
<div dir="rtl">
@@ -252,23 +253,23 @@ return (
252253
</li>
253254
);
254255
```
256+
255257
<div dir="rtl">
256258
257-
شما می توانید آن را به صورت *"اگر `isPacked` (`?`)درست است، سپس `name + ''` را رندر کنید، در غیر این صورت (`:`) `name` را اجرا کنید "* بخوانید.
259+
شما می توانید آن را به صورت *"اگر `isPacked` درست است، سپس (`?`) `name + ''` را رندر کنید، در غیر این صورت (`:`) `name` را اجرا کنید "* بخوانید.
258260
259261
</div>
260-
<DeepDive>
261262
262-
<div dir="rtl">
263+
<DeepDive>
263264
264265
#### آیا این دو مثال کاملاً معادل هستند؟ {/*are-these-two-examples-fully-equivalent*/}
265266
266-
</div>
267267
<div dir="rtl">
268268
269-
اگر از یک پس‌زمینه برنامه‌نویسی شی‌گرا می‌آیید، ممکن است فرض کنید که دو مثال بالا به طور ظاهری متفاوت هستند، زیرا یکی از آنها ممکن است دو "نمونه" متفاوت از `<li>` ایجاد کند. اما المنت‌های JSX "نمونه" نیستند زیرا هیچ حالت داخلی ندارند و نودهای واقعی DOM نیستند. آنها توصیف های سبک وزن هستند، مانند blueprintها. بنابراین، این دو مثال، در واقع کاملاً معادل *هستند*. [نگهداری و بازنشانی وضعیت](/learn/preserving-and-resetting-state) به تفصیل درباره اینکه چگونه این کار می‌کند توضیح می‌دهد.
269+
اگر از یک پس‌زمینه برنامه‌نویسی شی‌گرا می‌آیید، ممکن است فرض کنید که دو مثال بالا به طور ظاهری متفاوت هستند، زیرا یکی از آنها ممکن است دو "نمونه" متفاوت از `<li>` ایجاد کند. اما المنت‌های JSX "نمونه" نیستند زیرا هیچ حالت داخلی ندارند و نودهای واقعی DOM نیستند. آنها توصیف های سبک وزن هستند، مانند blueprintها. بنابراین، این دو مثال، در واقع کاملاً معادل *هستند*. [نگهداری و بازنشانی وضعیت](/learn/preserving-and-resetting-state) به تفصیل درباره اینکه چگونه این، کار می‌کند توضیح می‌دهد.
270270
271271
</div>
272+
272273
</DeepDive>
273274
274275
<div dir="rtl">
@@ -330,7 +331,7 @@ export default function PackingList() {
330331
</div>
331332
<div dir="rtl">
332333

333-
یکی دیگر از میانبرهای رایجی که با آن مواجه خواهید شد، [عملگر منطقی جاوا اسکریپت AND (`&&`) است.](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND#:~:text=The%20logical%20AND%20(%20%26%26%20)%20operator,it%20returns%20a%20Boolean%20value.) در داخل کامپوننت های ری‌اکت، اغلب زمانی می‌آید که می خواهید مقداری JSX را وقتی شرطی درست است، رندر کنید، **یا هیچ چیزی را رندر نکنید.** با `&&`، فقط در صورتی می توانید علامت را به صورت شرطی ارائه دهید که `true` ،`isPacked` باشد:
334+
یکی دیگر از میانبرهای رایجی که با آن مواجه خواهید شد، [عملگر منطقی AND (`&&`) جاوا اسکریپت است.](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND#:~:text=The%20logical%20AND%20(%20%26%26%20)%20operator,it%20returns%20a%20Boolean%20value.) در داخل کامپوننت های ری‌اکت، اغلب زمانی می‌آید که می خواهید مقداری JSX را وقتی شرطی درست است، رندر کنید، **یا هیچ چیزی را رندر نکنید.** با `&&`، فقط در صورتی می توانید علامت را به صورت شرطی ارائه دهید که `true` ،`isPacked` باشد:
334335

335336
</div>
336337

@@ -345,7 +346,7 @@ return (
345346

346347
می توانید این را به صورت *"اگر `isPacked`، آنگاه (`&&`) علامت چک‌مارک را ارائه دهید، در غیر این صورت، هیچ چیزی را رندر نکنید"*، بخوانید.
347348

348-
اینجا در عمل است:
349+
اینجا در عمل داریم:
349350

350351
</div>
351352

@@ -386,7 +387,7 @@ export default function PackingList() {
386387
</Sandpack>
387388
<div dir="rtl">
388389
389-
یک [JavaScript && expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND) اگر سمت چپ (شرط ما) `true` است، مقدار سمت راست خود (در مورد ما، علامت چکمارک) را برمی گرداند. اما اگر شرط `false` باشد، کل عبارت `false` می شود. ری‌اکت 'false' را به عنوان "سوراخ" در درخت JSX، درست مانند `null` یا `undefined` در نظر می‌گیرد و هیچ چیزی را در جای آن ارائه نمی‌کند.
390+
یک [عبارت && جاوااسکریپت](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND) اگر سمت چپ (شرط ما) `true` است، مقدار سمت راست خود (در مورد ما، علامت چکمارک) را برمی گرداند. اما اگر شرط `false` باشد، کل عبارت `false` می شود. ری‌اکت `false` را به عنوان "سوراخ" در درخت JSX، درست مانند `null` یا `undefined` در نظر می‌گیرد و هیچ چیزی را در جای آن ارائه نمی‌کند.
390391
391392
</div>
392393
@@ -549,13 +550,13 @@ export default function PackingList() {
549550
550551
</Recap>
551552
552-
553-
554553
<Challenges>
555-
<div dir="rtl">
554+
556555
557556
#### نمادی برای مواردی که کامل‌نشده با `? :` نشان بده {/*show-an-icon-for-incomplete-items-with--*/}
558557
558+
<div dir="rtl">
559+
559560
اگر `true` ،`isPacked` نباشد،‌ از عملگر شرطی (`cond ? a : b`) برای رندر‌کردن ❌ استفاده کن.
560561
561562
</div>
@@ -635,10 +636,11 @@ export default function PackingList() {
635636
</Sandpack>
636637
637638
</Solution>
638-
<div dir="rtl">
639639
640640
#### اهمیت مورد را با `&&` نشان بده {/*show-the-item-importance-with-*/}
641641
642+
<div dir="rtl">
643+
642644
در این مثال، هر `Item` یک `importance` عددی دریافت می‌کند. از عملگر `&&` برای نمایش "_(Importance: X)_" به صورت italics استفاده کنید، اما فقط برای مواردی که اهمیت غیر صفر دارند. لیست اقلام شما باید به این شکل باشد:
643645
644646
* Space suit _(Importance: 9)_
@@ -735,22 +737,18 @@ export default function PackingList() {
735737
736738
<div dir="rtl">
737739
738-
<<<<<<< HEAD
739-
توجه داشته باشید که باید به جای `importance > 0 && ...` بنویسید `importance && ...` تا اگر `importance` برابر با `0` باشد، `0` به عنوان نتیجه رندر نشود!
740+
توجه داشته باشید که باید به جای `importance && ...` بنویسید `importance > 0 && ...` تا اگر `importance` برابر با `0` باشد، `0` به عنوان نتیجه رندر نشود!
740741
741742
در این راه حل، از دو شرط مجزا برای درج فاصله بین نام و label اهمیت استفاده می شود. همچنین، می‌توانید از یک fragment با یک فاصله در ابتدا استفاده کنید: `importance > 0 && <> <i>...</i></>` یا بلافاصله یک فاصله در داخل `<i>` اضافه کنید: `importance > 0 && <i> ...</i>`.
742743
743744
</div>
744-
=======
745-
In this solution, two separate conditions are used to insert a space between the name and the importance label. Alternatively, you could use a fragment with a leading space: `importance > 0 && <> <i>...</i></>` or add a space immediately inside the `<i>`: `importance > 0 && <i> ...</i>`.
746-
>>>>>>> 819e4e26cc44adbb78921c0d540b1fad539ebfca
747745
748746
</Solution>
749747
750-
<div dir="rtl">
751-
752748
#### ری‌فکتور یک سری از `? :` به `if` و متغیر‌ها {/*refactor-a-series-of---to-if-and-variables*/}
753749
750+
<div dir="rtl">
751+
754752
این کامپوننت `Drink` از یک سری شرط‌های `? :` برای نشان دادن اطلاعات مختلف بسته به اینکه prop `name` برابر با `"tea"` باشد یا `"coffee"` ،‌ استفاده می‌کند. مشکل این است که اطلاعات مربوط به هر نوشیدنی در شرط‌های مختلف پخش می شود. این کد را برای استفاده از یک عبارت `if` به جای سه شرط‌ `? :` ری‌فکتور کنید
755753
756754
</div>

0 commit comments

Comments
 (0)