Skip to content

Commit f025561

Browse files
author
Abolfazl Rezvani Naraqi
authored
Merge pull request #364 from A7med3bdulBaset/main
Fix build errors
2 parents e5c325f + b2e2811 commit f025561

File tree

3 files changed

+6
-11
lines changed

3 files changed

+6
-11
lines changed

src/content/community/conferences.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,6 @@ June 16th, 2023. Larvik, Norway
9292

9393
[Website](https://reactnorway.com/) - [Twitter](https://twitter.com/ReactNorway/) - [Facebook](https://www.facebook.com/reactdaynorway/)
9494

95-
### React Summit 2023 {/*react-summit-2023*/}
96-
June 2 & 6, 2023. In-person in Amsterdam, Netherlands + remote first interactivity (hybrid event)
97-
9895
[Website](https://reactathon.com) - [Twitter](https://twitter.com/reactathon) - [YouTube](https://www.youtube.com/realworldreact)
9996

10097
### RemixConf 2023 {/*remixconf-2023*/}

src/content/learn/state-a-components-memory.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -545,14 +545,13 @@ It is a good idea to have multiple state variables if their state is unrelated,
545545
<DeepDive>
546546

547547
#### How does React know which state to return? {/*how-does-react-know-which-state-to-return*/}
548-
<p dir='rtl>
549548
شاید متوجه شده باشید که فراخوانی `useState` هیچ اطلاعاتی درباره *کدام* متغیر وضعیت به آن ارجاع داده می‌شود، دریافت نمی‌کند. هیچ "شناسه"‌ای که به `useState` منتقل شود وجود ندارد، پس چگونه می‌داند کدام یک از متغیرهای استیت را برگرداند؟ آیا بر اساس یک جادویی مانند تجزیه و تحلیل توابع عمل می‌کند؟ پاسخ نه است.
550549

551550
بدلاً از آن، برای فعال کردن دستور زبان مختصر آن‌ها، هوک‌ها **بر اعتماد به ترتیب فراخوانی پایدار در هر بار رندر کامپوننت یکسان تکیه می‌کنند.** این در عمل به خوبی کار می‌کند زیرا اگر قانون فوق را رعایت کنید ("تنها در سطح بالایی دستورهای هوک را فراخوانی کنید")، هوک‌ها همیشه به همان ترتیب فراخوانی می‌شوند. علاوه بر این، یک [افزونه لینتر](https://www.npmjs.com/package/eslint-plugin-react-hooks) اکثر اشتباهات را گرفتار می‌کند.
552551
در داخل، React یک آرایه از زوج‌های استیت برای هر کامپوننت نگه می‌دارد. همچنین شاخص زوج فعلی را که قبل از رندر شدن به `0` تنظیم شده است، حفظ می‌کند. هر بار که `useState` را فراخوانی می‌کنید، React زوج وضعیت بعدی را به شما ارائه می‌دهد و شاخص را افزایش می‌دهد. می‌توانید بیشتر در مورد این مکانیزم در [React Hooks: Not Magic, Just Arrays.](https://medium.com/@ryardley/react-hooks-not-magic-just-arrays-cd4f1857236e) مطالعه کنید.
553552

554553
[React Hooks: Not Magic, Just Arrays.](https://medium.com/@ryardley/react-hooks-not-magic-just-arrays-cd4f1857236e)
555-
</p>
554+
556555
This example **doesn't use React** but it gives you an idea of how `useState` works internally:
557556

558557
<Sandpack>

src/content/learn/thinking-in-react.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -264,8 +264,7 @@ state
264264
یعنی ما فقط متن جستجو شده و مقدار تکست باکس را به عنوان استیت نگه میداریم
265265

266266
<DeepDive>
267-
268-
### Props vs State {/*props-vs-state*/}
267+
#### Props vs State {/*props-vs-state*/}
269268

270269

271270
دو نوع مدل دیتا در ری اکت داریم: وضعیت (state) و (props).
@@ -283,7 +282,7 @@ state
283282

284283

285284

286-
## Step 4: Identify where your state should live {/* step-4-identify-where-your-state-should-live */}
285+
## Step 4: Identify where your state should live {/*step-4-identify-where-your-state-should-live*/}
287286

288287
بعد از شناسایی داده‌های حداقلی مرتبط با برنامه‌ی شما، نیاز دارید تعیین کنید که کدام کامپوننت مسئول تغییر این داده‌هاست، یا به عبارتی، مالک (owns) این داده‌ها است. به یاد داشته باشید: ری‌اکت از جریان داده‌ی یک طرفه استفاده می‌کند و داده‌ها را از کامپوننت والد به کامپوننت‌های فرزند در سلسله‌مراتب ارسال می‌کند. ممکن است اولیه‌اش که کدام کامپوننت باید مالک داده‌هایی باشد که در اختیار دارد، به وضوح نباشد. اگر تازه با این مفهوم آشنا شده‌اید، ممکن است چالش برانگیز باشد، اما با دنبال کردن این
289288

@@ -486,11 +485,11 @@ function SearchBar({ filterText, inStockOnly }) {
486485
با این حال، هنوز کدی برای پاسخ به اقدامات کاربر مانند تایپ کردن اضافه نکرده‌اید. این مرحله آخر شما خواهد بود.
487486
</p>
488487
489-
## Step 5: Add inverse data flow {/* step-5-add-inverse-data-flow */}
488+
## Step 5: Add inverse data flow {/*step-5-add-inverse-data-flow*/}
490489
<p dir="rtl">
491490
در حال حاضر برنامه‌ی شما با پراپ‌ها و استیت‌ها که از بالا به پایین سلسله‌مراتب به‌خوبی رندر می‌شود. اما برای تغییر استیت بر اساس ورودی کاربر، شما نیاز به پشتیبانی از جریان داده به سمت دیگر دارید: کامپوننت‌های فرم (form components) که در عمق سلسله‌مراتب هستند باید استیت را در FilterableProductTable به‌روزرسانی دهنده.
492491
493-
ری‌اکت این جریان داده را صریحاً اعلام می‌کند، اما نیاز به تایپ کردن بیشتری نسبت به ورودی داده دوطرفه دارد. اگر در مثال بالا سعی کنید در ورودی تایپ کنید یا چک‌باکس را انتخاب کنید، مشاهده خواهید کرد که ری‌اکت ورودی‌های شما را نادیده می‌گیرد. این عمدی است. با نوشتن <input value={filterText} />، شما value پراپ ورودی را به طور دائمی برابر با استیت filterText قرار داده‌اید که از FilterableProductTable به آن منتقل می‌شود. از آنجایی که استیت filterText هرگز تنظیم نمی‌شود، ورودی هرگز تغییر نمی‌کند.
492+
ری‌اکت این جریان داده را صریحاً اعلام می‌کند، اما نیاز به تایپ کردن بیشتری نسبت به ورودی داده دوطرفه دارد. اگر در مثال بالا سعی کنید در ورودی تایپ کنید یا چک‌باکس را انتخاب کنید، مشاهده خواهید کرد که ری‌اکت ورودی‌های شما را نادیده می‌گیرد. این عمدی است. با نوشتن `<input value={filterText} />`، شما value پراپ ورودی را به طور دائمی برابر با استیت filterText قرار داده‌اید که از FilterableProductTable به آن منتقل می‌شود. از آنجایی که استیت filterText هرگز تنظیم نمی‌شود، ورودی هرگز تغییر نمی‌کند.
494493
495494
شما می‌خواهید طوری عمل کنید که هر زمان کاربر ورودی‌های فرم را تغییر دهد، استیت به‌روزرسانی شود تا تغییرات نمایان شود. استیت توسط FilterableProductTable مدیریت می‌شود، بنابراین تنها این کامپوننت می‌تواند توابع setFilterText و setInStockOnly را فراخوانی کند. برای اجازه دادن به SearchBar برای به‌روزرسانی استیت FilterableProductTable، شما باید این توابع را به SearchBar ارسال کنید.
496495
@@ -672,7 +671,7 @@ td {
672671
673672
برای کسب اطلاعات بیشتر در مورد کنترل روی‌داد‌ها و به روز‌رسانی استیت متوانید به قسمت [افزودن تعاملات](/learn/adding-interactivity) مراجعه کنید.
674673
675-
## Where to go from here {/* where-to-go-from-here */}
674+
## Where to go from here {/*where-to-go-from-here*/}
676675
677676
این مقدمه‌ای بسیار کوتاه بود برای آشنایی با نحوه‌ی فکر کردن در مورد ساخت کامپوننت‌ها و برنامه‌ها با ری‌اکت. شما می‌توانید همین حالا یک پروژه‌ی ری‌اکت راه‌اندازی کنید یا به عمق بیشتری درباره‌ی تمام دستورالعمل‌ها (سینتکس) استفاده‌شده در این آموزش بپردازید.
678677

0 commit comments

Comments
 (0)