diff --git a/book.html b/book.html index 6a4fa0fe..9d3dc4fc 100644 --- a/book.html +++ b/book.html @@ -420,9 +420,91 @@ .markdown-preview.markdown-preview .empty { display: block; } + .bookmark-sign,tbody tr td:first-child, thead tr th:first-child { + display: none; + } } - + tbody tr td:first-child{ + text-align: center; + } + .bookmark-sign { + cursor: pointer; + } +ol li h3{display:flex;justify-content: space-between;align-items: center;} +
@@ -450,10 +532,13 @@

دانلود کتاب به فرمت‌های PDF/Epub

می‌تونید از بخش ریلیزهای گیت هاب دانلود کنین(این لینک).

-

فهرست

+

+ فهرست +

+ @@ -461,1329 +546,1661 @@

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1792,12 +2209,18 @@

Core React

  1. -

    ری‌اکت چیه؟

    +

    + ری‌اکت چیه؟ + +

    ری‌اکت یه کتابخونه متن‌باز هست که برای ساختن رابط کاربری مخصوصا برنامه‌های تک صفحه‌ای استفاده میشه. از این کتابخونه برای مدیریت لایه view توی برنامه‌های وب و موبایل استفاده میشه. توسط Jordan Walke تولید شده که یه مهندس نرم‌افزار توی شرکت فیس‌بوک هستش. اولین بار سال ۲۰۱۱ و روی برنامه اینستاگرام مورد استفاده قرار گرفت

    فهرست

  2. -

    اصلی‌ترین ویژگی‌های ری‌اکت چیا هستن؟

    +

    + اصلی‌ترین ویژگی‌های ری‌اکت چیا هستن؟ + +

    اصلی‌ترین ویژگی‌های ری‌اکت اینا هستن:

نشانه ردیف سوال
1 ری‌اکت چیه؟
2 اصلی‌ترین ویژگی‌های ری‌اکت چیا هستن؟
3 JSX چیه؟
4 تفاوت‌های Element و Component چیه؟
5 تو ری‌اکت چطوری کامپوننت می‌سازیم؟
6 کی باید از Class Component بجای Function Component استفاده کنیم؟
7 Pure Components چیه؟
8 state تو ری‌اکت چیکار می‌کنه؟
9 props تو ری‌اکت چیکار می‌کنه؟
10 تفاوت state و props چیه؟
11 چرا نباید state رو مستقیما آپدیت کنیم؟
12 هدف از متدهای callback توی استفاده از setState چیه؟
13 تفاوت بین نحوه مدیریت رویداد HTML و React چیه؟
14 چطوری متد یا event رو به تابع callback توی JSX bind کنیم؟
15 چطوری میشه یک مقدار رو به یه تابع callback یا eventHandler پاس بدیم؟
16 Synthetic events(رویدادهای مصنوعی) تو ری‌اکت چیا هستن؟
17 عبارات شرطی درون خطی چیه؟
18 props های "key" چی هستن و مزایای استفاده از آنها در آرایه عناصر چیه؟
19 کاربرد refها چیه؟
20 چطوری از ref استفاده کنیم؟
21 forward ref چیه؟
22 بین callback refs و تابع findDOMNode کدوم رو ترجیح میدی؟
23 چرا Refهای متنی منقضی محسوب می‌شوند؟
24 Virtual DOM چیه؟
25 Virtual DOM چطوری کار می‌کنه؟
26 تفاوت بین Shadow DOM و Virtual DOM چیه؟
27 React Fiber چیه؟
28 هدف اصلی React Fiber چیه؟
29 کامپوننت‌های کنترل شده چی هستن؟
30 کامپوننت‌های کنترل نشده چی هستن؟
31 تفاوت‌های بین createElement و cloneElement چیا هستن؟
32 مفهوم lift state up یا مدیریت state در لول بالاتر رو توضیح میدی؟
33 فازهای مختلف از lifecycle کامپوننت چیا هستن؟
34 متدهای lifecycle کامپوننت چیا هستن؟
35 کامپوننت‌های Higher-Order چی هستن؟
36 چطوری می‌تونیم props proxy برای کامپوننت‌های HOC ایجاد کنیم؟
37 context چیه؟
38 children prop چیه؟
39 چطوری میشه تو React کامنت نوشت؟
40 چرا توی کامپوننت‌های کلاس باید توی constructor تابع super رو با مقدار props صدا بزنیم؟
41 reconciliation چیه؟
42 چطوری با یه اسم داینامیک set state کنیم؟
43 یه اشتباه رایج برای مدیریت توابع eventها که باعث میشه با هر رندر توابع مجدد ساخته بشن چی هستش؟
44 تابع lazy که برای lazy load استفاده میشه رو می‌تونیم به صورت name export خروجی بگیریم؟
45 چرا ری‌اکت از className بجای class استفاده می‌کنه؟
46 fragmentها چی هستن؟
47 چرا fragmentها از تگ‌های div بهترن؟
48 توی ری‌اکت portal‌ها چیکار می‌کنن؟
49 کامپوننت stateless چیه؟
50 کامپوننت stateful چیه؟
51 چطوری prop‌های کامپوننت رو اعتبارسنجی کنیم؟
52 مزایای React چیه؟
53 محدودیت های React چیه؟
54 error boundaryها توی ری‌اکت نسخه 16 چیکار می‌کنن؟
55 چطوری از error boundaryها توی نسخه ۱۵ ریکت مدیریت شدن؟
56 روش‌های پیشنهادی برای type checking چیه؟
57 کاربرد پکیج react-dom چیه؟
58 کاربرد متد render از پکیج react-dom چیه؟
59 ReactDOMServer چیه؟
60 چطوری از InnerHtml توی ری‌اکت استفاده کنیم؟
61 چطوری توی ری‌اکت استایل‌دهی می‌کنیم؟
62 تفاوت eventهای ری‌اکت چیه؟
63 اگه توی constructor بیاییم و setState کنیم چی میشه؟
64 تاثیر استفاده از ایندکس به عنوان key چیه؟
65 نظرت راجع به استفاده از setState توی متد componentWillMount چیه؟
66 اگه از prop توی مقداردهی اولیه state استفاده کنیم چی میشه؟
67 چطوری کامپوننت رو با بررسی یه شریط رندر می‌کنیم؟
68 چرا وقتی propها رو روی یه DOM Elemnt می‌آییم spread می‌کنیم باید مراقب باشیم؟
69 چطوری از decoratorها توی ری‌اکت استفاده کنیم؟
70 چطوری یه کامپوننت رو memoize می‌کنیم؟
71 چطوری باید Server-Side Rendering یا SSR رو توی ری‌اکت پیاده کنیم؟
72 چطوری حالت production رو برای ری‌اکت فعال کنیم؟
73 CRA چیه و چه مزایایی داره؟
74 ترتیب اجرا شدن متد‌های life cycle چطوریه؟
75 کدوم متد‌های life cycle توی نسخه 16 ری‌اکت منسوخ شدن؟
76 کاربرد متد getDerivedStateFromProps چیه؟
77 کاربرد متد getSnapshotBeforeUpdate چیه؟
78 آیا هوک‌ها جای render props و HOC رو می‌گیرن؟
79 روش توضیه شده برای نام‌گذاری کامپوننت‌ها چیه؟
80 روش توصیه شده برای ترتیب متدها در کلاس کامپوننت‌ها چیه؟
81 کامپوننت تعویض کننده یا switching چیه؟
82 چرا نیاز میشه به تایع setState یه فانکشن callback پاس بدیم؟
83 حالت strict توی ری‌اکت چیکار می‌کنه؟
84 Mixin‌های ری‌اکت چی هستن؟
85 چرا isMounted آنتی پترن هست و روش بهتر انجامش چیه؟
86 پشتیبانی ری‌اکت از pointer eventها چطوریه؟
87 چرا باید اسم کامپوننت با حرف بزرگ شروع بشه؟
88 آیا propهای custom توی ری‌اکت پشتیبانی میشن؟
89 تفاوت‌های constructor و getInitialState چیه؟
90 می‌تونیم یه کامپوننت رو بدون setState ری‌رندر کنیم؟
91 تفاوت‌های فراخوانی super(-) و super(props) توی کلاس کامپوننت‌های ری‌اکت چیه؟
92 چطوری توی JSX حلقه یا همون لوپ رو داشته باشیم؟
93 توی attributeها چطوری به prop دسترسی داشته باشیم؟
94 چطوری یه PropType برای ‌آرایه‌ای از objectها با shape داشته باشیم؟
95 چطوری classهای یه المنت رو به صورت شرطی رندر کنیم؟
96 تفاوت‌های React و ReactDOM چیه؟
97 چرا ReactDOM رو از React جدا کردن؟
98 چطوری از label تو ری‌اکت استفاده کنیم؟
99 چطوری می‌تونیم چندتا object از استایل‌های درون خطی رو با هم ترکیب کنیم؟
100 چطوری با resize شدن مرورگر یه ویو رو ری‌رندر کنیم؟
101 تفاوت متدهای setState و replaceState چیه؟
102 چطوری به تغییرات state گوش بدیم؟
103 روش توصیه شده برای حذف یک عنصر از آرایه توی state چیه؟
104 امکانش هست که ری‌اکت رو بدون رندر کردن HTML استفاده کنیم؟
105 چطوری میشه با ری‌اکت یه JSON به شکل beautify شده نشون داد؟
106 چرا نمی‌تونیم prop رو آپدیت کنیم؟
107 چطوری می‌تونیم موقع لود صفحه روی یه input فوکوس کنیم؟
108 روش‌های ممکن برای آپدیت کردن object توی state چیا هستن؟
109 چرا توابع به جای object در setState ترجیح داده می‌شوند؟
110 چطوری می‌‌تونیم نسخه ری‌اکت جاری رو توی محیط اجرایی بفهمیم؟
111 روش‌های لود کردن polyfill توی CRA چیا هستن؟
112 توی CRA چطوری از https به‌جای http استفاده کنیم؟
113 توی CRA چطوری میشه از مسیر‌های طولانی برای ایمپورت جلوگیری کرد؟
114 چطوری میشه Google Analytics رو به react-router اضافه کرد؟
115 چطوری یه کامپوننت رو هر ثانیه به روز کنیم؟
116 برای استایل‌دهی‌های درون خطی چطوری باید پیشوند‌های مخصوص مرورگرها رو اضافه کرد؟
117 چطوری کامپوننت‌های ری‌اکت رو با es6 می‌تونیم import و export کنیم؟
118 استثنایی که برای نام‌گذاری کامپوننت اجازه استفاده از حرف کوچک رو میده چیه؟
119 چرا تابع سازنده کلاس کامپوننت یکبار صدا زده میشه؟
120 توی ری‌اکت چطوری مقدار ثابت تعریف کنیم؟
121 چطوری توی برنامه event کلیک شدن رو trigger کنیم؟
122 آیا استفاده از async/await توی ری‌اکت ممکنه؟
123 ساختار پوشه‌بندی معروف برا ری‌اکت چطوریه؟
124 پکیج‌های مشهور برای انیمیشن چیا هستن؟
125 مزایای ماژول‌های style چیه؟
126 معروف‌ترین linterهای ری‌اکت کدوما هستن؟
127 چطوری باید توی کامپوننت درخواست api call بزنیم؟
128 render props چیه؟
رووتر ری‌اکت
129 React Router چیه؟
130 ارتباط React Router و کتابخونه history چیه؟
131 کامپوننت‌های router توی نسخه۴ چیا هستن؟
132 هدف از متدهای push و replace توی history چیه؟
133 چطوری توی برنامه به route خاص جابجا بشیم؟
134 چطوری میشه query پارامترها رو توی ری‌اکت روتر نسخه۴ گرفت؟
135 دلیل خطای "Router may have only one child element" چیه؟
136 چطوری میشه به متد history.push پارامتر اضافه کرد؟
137 چطوری میشه صفحه ۴۰۴ ساخت؟
138 توی ری‌اکت روتر نسخه۴ چطوری میشه history رو گرفت؟
139 چطوری بعد از لاگین به شکل خودکار ریدایرکت کنیم؟
چند زبانگی در ری‌اکت
140 React-Intl چیه؟
141 اصلی‌ترین ویژگی‌های React Intl چیا هستن؟
142 دو روش فرمت کردن توی React Intl چیا هستن؟
143 چطوری از FormattedMessage به عنوان یه placeholder میشه استفاده کرد؟
144 چطوری میشه locale فعلی رو توی React Intl بدست آورد؟
145 چطوری با استفاده از React Intl یه تاریخ رو فرمت‌بندی کنیم؟
تست کردن ری‌اکت
146 توی تست ری‌اکت Shallow Renderer چیه؟
147 پکیج TestRenderer توی ری‌اکت چیه؟
148 هدف از پکیج ReactTestUtils چیه؟
149 Jest چیه؟
150 مزایای jest نسبت به jasmine چیا هستن؟
151 یه مثال ساده از تست با jest بزن؟
React Redux
152 Flux چیه؟
153 Redux چیه؟
154 مبانی اصلی ریداکس چیا هستن؟
155 کاستی‌های redux نسبت به flux چیا هستن؟
156 تفاوت‌های mapStateToProps و mapDispatchToProps چی هست؟
157 توی ریدیوسر می‌تونیم یه actionی رو dispatch کنیم؟
158 چطوری میشه خارج از کامپوننت میشه store ریداکس دسترسی داشت؟
159 اشکالات پترن MVW چیا هستن؟
160 تشابهی بین Redux و RxJS هست؟
161 چطوری میشه یه اکشن رو موقع لود dispatch کرد؟
162 چطوری از متد connect از پکیج react-redux استفاده می‌کنیم؟
163 چطوری میشه state ریداکس رو ریست کرد؟
164 هدف از کاراکتر @ توی decorator متد connect چیه؟
165 تفاوت‌های context و React Redux چیه؟
166 چرا به توابع state ریداکس reducer میگن؟
167 توی redux چطوری میشه api request زد؟
168 آیا لازمه همه state همه کامپوننت‌هامونو توی ریداکس نگهداری کنیم؟
169 روش صحیح برای دسترسی به store ریداکس چیه؟
170 تفاوت‌های component و container توی ریداکس چی هست؟
171 هدف از constantها تا typeها توی ریداکس چیه؟
172 روش‌های مختلف برای نوشتن mapDispatchToProps چیه؟
173 کاربرد پارامتر ownProps توی mapStateToProps و mapDispatchToProps چیه؟
174 ساختار پوشه‌بندی ریشه ریداکس اکثرا چطوریه؟
175 redux-saga جیه؟
176 مدل ذهنی redux-saga چطوریه؟
177 تفاوت افکت‌های call و put توی redux-saga چی هست؟
178 Redux Thunk چیه؟
179 تفاوت‌های redux-saga و redux-thunk جیا هستن؟
180 Redux DevTools چیه؟
181 ویژگی‌های Redux DevTools چیا هستن؟
182 سلکتورهای ریداکس چی هستن و چرا باید ازشون استفاده کنیم؟
183 Redux Form چیه؟
184 اصلی‌ترین ویژگی‌های Redux Form چیه؟
185 چطوری میشه چندتا middleware به ریداکس اضافه کرد؟
186 چطوری میشه توی ریداکس initial state تعریف کرد؟
187 تفاوت‌های Relay با Redux چیا هستن؟
React Native
188 تفاوت‌های React Native و React چیا هستن؟
189 چطوری میشه برنامه React Native رو تست کرد؟
190 چطوری میشه توی React Native لاگ کرد؟
191 چطوری میشه React Native رو دیباگ کرد؟
کتابخانه‌های مورد استفاده با ری‌اکت
192 کتابخونه reselect چیه و چطوری کار می‌کنه؟
193 Flow چیه؟
194 تفاوت‌های Flow و PropTypes چیا هستن؟
195 چطوری از آیکون‌های font-awesome توی ری‌اکت استفاده کنیم؟
196 React Dev Tools چیه؟
197 چرا توی کروم devtools برای فایل‌های local لود نمیشه؟
198 چطوری از Polymer توی React استفاده کنیم؟
199 مزایای React نسبت به Vue.js چیا هستن؟
200 تفاوت‌های React و Angular چیا هستن؟
201 چرا تب React در DevTools نشان داده نمی‌شود؟
202 Styled components چیه؟
203 یه مثال از Styled Components می‌تونی بگی؟
204 Relay چیه؟
205 چطوری میشه از تایپ اسکریپت توی create-react-app استفاده کرد؟
متفرقه
206 اصلی‌ترین ویژگی‌های کتابخونه reselect چیا هستن؟
207 یه مثال از کارکرد کتابخونه reselect بزن؟
208 توی Redux اکشن چیکار می‌کنه؟
209 استاتیک شی با کلاس های ES6 در React کار می کنه؟
210 ریداکس رو قفط با ری‌اکت میشه استفاده کرد؟
211 برای استفاده از Redux به ابزار build خاصی احتیاج داریم؟
212 مقادیر پیش‌فرض ریداکس فرم چطوری تغییرات رو از state می‌گیرن؟
213 توی PropTypeهای ری‌اکت چطوری میشه برای یه prop چند نوع داده مجاز مشخص کرد؟
214 می‌تونیم فایل svg رو به عنوان کامپوننت import کنیم؟
215 چرا استفاده از توابع ref callback درون خطی توصیه نمیشه؟
216 render hijacking توی ری‌اکت چیه؟
217 پیاده‌سازی factory یا سازنده HOC چطوریه؟
218 چطوری به یه کامپوننت ری‌اکت عدد پاس بدیم؟
219 لازمه همه stateها رو توی ریداکس مدیریت کنیم؟ لزومی به استفاده از state داخلی داریم؟
220 هدف از متد registerServiceWorker توی ری‌اکت چیه؟
221 تابع memo ری‌اکت چیه؟
222 تابع lazy ری‌اکت چیه؟
223 چطوری با استفاده از تابع setState از رندر غیرضروری جلوگیری کنیم؟
224 توی نسخه ۱۶ ری‌اکت چطوری میشه آرایه، Strings و یا عدد رو رندر کنیم؟
225 چطوری میشه از تعریف ویژگی در کلاس کامپوننت استفاده کرد؟
226 hookها چی هستن؟
227 چه قوانینی برای هوک‌ها باید رعایت بشن؟
228 چطوری میشه از استفاده درست هوک‌ها اطمینان حاصل کرد؟
229 تفاوت‌های Flux و Redux چیا هستن؟
230 مزایای ری‌اکت روتر نسخه۴ چیه؟
231 می‌تونی راجع به متد componentDidCatch توضیح بدی؟
232 در چه سناریویی error boundary خطا رو catch نمی‌کنه؟
233 چرا نیازی به error boundaries برای event handlerها نیست؟
234 تفاوت بلوک try catch و error boundaryها چیه؟
235 رفتار خطاهای uncaught در ری‌اکت 16 چیه؟
236 محل مناسب برای قرار دادن error boundary کجاست؟
237 مزیت چاپ شدن stack trace کامپوننت‌ها توی متن ارور boundary ری‌اکت چیه؟
238 متدی که در تعریف کامپوننت‌های class الزامیه؟
239 نوع‌های ممکن برای مقدار بازگشتی متد render چیا هستن؟
240 هدف اصلی از متد constructor چیه؟
241 آیا تعریف متد سازنده توی ری‌اکت الزامیه؟
242 Default propها چی هستن؟
243 چرا نباید تابع setState رو توی متد componentWillUnmount فراخوانی کرد؟
244 کاربرد متد getDerivedStateFromError چیه؟
245 کدوم متدها و به چه ترتیبی در طول ری‌رندر فراخوانی میشن؟
246 کدوم متد‌ها موقع error handling فراخوانی میشن؟
247 کارکرد ویژگی displayName چیه؟
248 ساپورت مرورگرها برای برنامه ری‌اکتی چطوریه؟
249 هدف از متد unmountComponentAtNode چیه؟
250 code-splitting چیه؟
251 مزایای حالت strict چیه؟
252 Fragmentهای دارای key هستن؟
253 آیا ری‌اکت از همه‌ی attributeهای HTML پشتیبانی می‌کنه؟
254 محدودیت‌های HOCها چی هستن؟
255 چطوری میشه forwardRefs رو توی DevTools دیباگ کرد؟
256 مقدار یه props کامپوننت کی true میشه؟
257 NextJS چیه و ویژگی‌های اصلیش چیا هستن؟
258 چط،وی کی‌تونیم یه تابع event handler رو به یه کامپوننت پاس بدیم؟
259 استفاده از توابع arrow برای متدهای render خوبه؟
260 چطوری از اجرای چندباره یه تابع جلوگیری کنیم؟
261 JSX چطوری از حمله‌های Injection جلوگیری می‌کنه؟
262 چطوری elementهای رندر شده رو آپدیت کنیم؟
263 چرا propها read only هستن؟
264 چرا میگیم تابع setState از طریق merge کردن state را مدیریت می‌کنه؟
265 چطوری می‌تونیم به متد event handler پارامتر پاس بدیم؟
266 چطوری از رندر مجدد کامپوننت‌ها جلوگیری کنیم؟
267 شرایطی که بدون مشکل پرفورمنس بتونیم از ایندکس به عنوان key استفاده کنیم چی هست؟
268 keyهای ری‌اکت باید به صورت عمومی منحصر بفرد باشن؟
269 گزینه‌های محبوب برای مدیریت فرم‌ها توی ری‌اکت چیا هستن؟
270 مزایای کتابخانه فرمیک نبست به redux form چیه؟
271 چرا اجباری برای استفاده از ارث‌بری توی ری‌اکت نیست؟ مزیتی داره؟
272 می‌تونیم از web components توی برنامه ری‌اکت استفاده کنیم؟
273 dynamic import چیه؟
274 loadable componentها چی هستن؟
275 کامپوننت suspense چیه؟
276 چطوری به ازای route می‌تونیم code splitting داشته باشیم؟
277 یه مثال از نحوه استفاده از context میزنی؟
278 هدف از مقدار پیش‌فرض توی context چیه؟
279 چظوری از contextType استفاده می‌کنین؟
280 consumer چیه؟
281 چطوری مسائل مربوط به پرفورمنس با context رو حل می‌کنین؟
282 هدف از forward ref توی HOCها چیه؟
283 توی کامپوننت‌ها می‌تونیم پراپ ref داشته باشیم؟
284 چرا در هنگام استفاده از ForwardRefها نیاز به احتیاط بیشتری در استفاده از کتابخانه های جانبی داریم؟
285 چطوری بدون استفاده از ES6 کلاس کامپوننت بسازیم؟
286 استفاده از ری‌اکت بدون JSX ممکن است؟
287 الگوریتم‌های diffing ری‌اکت چی هستن؟
288 قوانینی که توسط الگوریتم‌های diffing پوشش داده می‌شوند کدام هستن؟
289 چه موقعی نیاز هست که از refها استفاده کنیم؟
290 برای استفاده از render propها لازمه که اسم prop رو render بزاریم؟
291 مشکل استفاده از render props با pure componentها چیه؟
292 چطوری با استفاده از render props می‌تونیم HOC ایجاد کنیم؟
293 تکنیک windowing چیه؟
294 توی JSX یه مقدار falsy رو چطوری چاپ کنیم؟
295 یه مورد استفاده معمول از portals مثال میزنی؟
296 توی کامپوننت‌های کنترل نشده چطوری مقداری پیش فرض اضافه کنیم؟
297 stack موردعلاقه شما برای کانفیگ پروژه ری‌اکت چیه؟
298 تفاوت‌ DOM واقعی و Virtual DOM چیه؟
299 چطوری Bootstrap رو به یه برنامه ری‌اکتی اضافه کنیم؟
300 می‌تونی یه لیسستی از معروف‌ترین وب‌سایت‌هایی که از ری‌اکت استفاده می‌کنن رو بگی؟
301 استفاده از تکنیک CSS In JS تو ری‌اکت توصیه میشه؟
302 لازمه همه کلاس کامپوننت‌ها رو تبدیل کنیم به هوک؟
303 چطوری میشه با هوک‌های ری‌اکت دیتا fetch کرد؟
304 هوک‌ها همه موارد کاربرد کلاس‌ها رو پوشش میده؟
305 نسخه پایدار ری‌اکت که از هوک پشتیبانی می‌کنه کدومه؟
306 چرا از حالت destructuring آرایه برای useState استفاده می‌کنیم؟
307 منابعی که باعث معرفی ایده هوک‌ها شدن چیا بودن؟
308 چطوری به APIهای ضروری اجزای وب دسترسی پیدا کنیم؟
309 formik چیه؟
310 middlewareهای مرسوم برای مدیریت ارتباط‌های asynchronous توی Redux چیا هستن؟
311 مرورگرها کد JSX رو متوجه میشن؟
312 Data flow یا جریان داده ری‌اکت رو توضیح میدی؟
313 react scripts چیه؟
314 ویژگی‌های create react app چیه؟
315 هدف از متد renderToNodeStream چیه؟
316 MobX چیه؟
317 تفاوت‌های بین Redux و MobX چیا هستن؟
318 لازمه قبل از شروع ری‌اکت ES6 رو یاد گرفت؟
319 Concurrent Rendering چیه؟
320 تفاوت بین حالت async و concurrent چیه؟
321 می تونیم از آدرس‌های دارای url جاواسکریپت در ری‌اکت 16.9 استفاده کرد؟
322 هدف از پلاگین eslint برای هوک‌ها چیه؟
323 تفاوت‌های Imperative و Declarative توی ری‌اکت چیه؟
324 مزایای استفاده از تایپ اسکریپت با ری‌اکت چیه؟
@@ -5269,17 +6286,26 @@

فهرست

  • -

    چرا تب React در DevTools نشان داده نمی‌شود؟

    +

    + چرا تب React در DevTools نشان داده نمی‌شود؟ + +

    موقع بارگیری صفحه، React DevTools یه گلوبال به اسم __REACT_DEVTOOLS_GLOBAL_HOOK__ تنظیم میکنه، بعدش ری‌اکت موقع مقدار دهی اولیه با اون هوک ارتباط برقرار میکنه. اگه وب سایت از ری‌اکت استفاده نکنه یا ری‌اکت نتونه با DevTools ارتباط برقرار کنه اون تب رو نشون نمیده.

    فهرست

  • -

    Styled components چیه؟

    +

    + Styled components چیه؟ + +

    styled-components یه کتابخونه جاواسکریپته برای طراحی ظاهر برنامه های ری‌اکت. نقشه برداری بین استایل ها و کامپوننت ها رو حذف میکنه و بهمون این امکان رو میده که css واقعی رو با جاواسکریپت بنویسیم.

    فهرست

  • -

    یه مثال از Styled Components می‌تونی بگی؟

    +

    + یه مثال از Styled Components می‌تونی بگی؟ + +

    بیاین کامپوننت های <Title> و <Wrapper> رو با استایل های خاص برای هر کدوم بسازیم.

    import React from 'react'
    @@ -5307,12 +6333,18 @@ 

    فهرست

  • -

    Relay چیه؟

    +

    + Relay چیه؟ + +

    Relay یه فریم ورک جاواسکریپت هستش برای ارائه یه لایه داده و ارتباط client-server به برنامه های وب با استفاده از لایه view ری‌اکت.

    فهرست

  • -

    چطوری میشه از تایپ اسکریپت توی create-react-app استفاده کرد؟

    +

    + چطوری میشه از تایپ اسکریپت توی create-react-app استفاده کرد؟ + +

    با شروع از react-scripts@2.1.0 یا بالاتر، یه پشتیبان داخلی برای typescript وجود داره. میتونیم گزینه --typescript رو به صورت زیر منتقل کنیم.

    npx create-react-app my-app --typescript
    @@ -5343,7 +6375,10 @@ 

    مت
    1. -

      اصلی‌ترین ویژگی‌های کتابخونه reselect چیا هستن؟

      +

      + اصلی‌ترین ویژگی‌های کتابخونه reselect چیا هستن؟ + +

      1. Selector ها داده های مشتق شده رو محاسبه میکنه و به ریداکس اجازه میدن حداقل state های ممکن رو ذخیره کنه.

      2. Selector‌ ها کارامد هستن. یه selector تا وقتی که یکی از آرگومان هاش تغییر نکرده معتبر نیست.

      3. @@ -5351,7 +6386,10 @@

        یه مثال از کارکرد کتابخونه reselect بزن؟

        +

        + یه مثال از کارکرد کتابخونه reselect بزن؟ + +

        بیاین محاسبات و مقادیر مختلف یه سفارش حمل و نقل رو با استفاده ساده از Reselect انجام بدیم:

        import { createSelector } from 'reselect'
        @@ -5393,7 +6431,10 @@ 

        فهرست

      4. -

        توی Redux اکشن چیکار می‌کنه؟

        +

        + توی Redux اکشن چیکار می‌کنه؟ + +

        اکشن ها آبجکت های ساده جاواسکریپت یا اطلاعاتی هستن که داده ها رو از برنامه به store میفرستن. اونا تنها منابع اطلاعاتی برای store هستن. اکشن باید یه ویژگی type داشته باشه که نوع اکشنی که انجام میشه رو نشون بده.

        برای مثال اکشنی که نشون میده یه آیتم todo جدید اضافه شده:

        @@ -5405,7 +6446,10 @@

        فهرست

      5. -

        استاتیک شی با کلاس های ES6 در React کار می کنه؟

        +

        + استاتیک شی با کلاس های ES6 در React کار می کنه؟ + +

        خیر، استاتیک ها فقط با React.createClass() کار میکنن:

        someComponent= React.createClass({
        @@ -5439,17 +6483,26 @@ 

        فهرست

      6. -

        ریداکس رو فقط با ری‌اکت میشه استفاده کرد؟

        +

        + ریداکس رو فقط با ری‌اکت میشه استفاده کرد؟ + +

        ریداگس میتونه به عنوان یه ذخیره داده برای لایه UI استفاده بشه. رایج ترین کاربرد ریداکس برای ری‌اکت و ری‌اکت نیتیو هستش، ولی اتصالاتی هم برای Angular، Angular 2، Vue، Mithril و موارد دیگه موجوده. ریداکس به راحتی یه مکانیسم اشتراکی ارائه میده که میتونه برای کد های دیگه هم استفاده بشه.

        فهرست

      7. -

        برای استفاده از Redux به ابزار build خاصی احتیاج داریم؟

        +

        + برای استفاده از Redux به ابزار build خاصی احتیاج داریم؟ + +

        ریداکس در اصل توی ES6‌ نوشته شده و برای تولید توی ES5 با Webpack و Babel منتشر شده. ما باید بتونیم بدون توجه به مراحل ساخت جاواسکریپت از اون استفاده کنیم. ریداکس همینطور یه ساختار UMD ارائه میده که میتونه مستقیم و بدون هیچگونه مراحل ساخت مورد استفاده قرار بگیره.

        فهرست

      8. -

        مقادیر پیش‌فرض ریداکس فرم چطوری تغییرات رو از state می‌گیرن؟

        +

        + مقادیر پیش‌فرض ریداکس فرم چطوری تغییرات رو از state می‌گیرن؟ + +

        باید تنظیمات enableReinitialize : true رو اضافه کنیم.

        const InitializeFromStateForm = reduxForm({
        @@ -5461,7 +6514,10 @@ 

        فهرست

      9. -

        توی PropTypeهای ری‌اکت چطوری میشه برای یه prop چند نوع داده مجاز مشخص کرد؟

        +

        + توی PropTypeهای ری‌اکت چطوری میشه برای یه prop چند نوع داده مجاز مشخص کرد؟ + +

        می تونیم از یکی از متد های PropTypes به اسم oneOfType() استفاده کنیم.

        برای مثال، ویژگی height رو می تونیم با دو نوع string یا number مثل زیر تعریف کنیم:

        @@ -5475,7 +6531,10 @@

        فهرست

      10. -

        می‌تونیم فایل svg رو به عنوان کامپوننت import کنیم؟

        +

        + می‌تونیم فایل svg رو به عنوان کامپوننت import کنیم؟ + +

        میتونیم SVG‌ رو مستقیما به عنوان یه کامپوننت به جای لود کردنش به عنوان یه فایل ایمپورت کنیم. این ویژگی توی react-scripts@2.0.0 و ورژن های بالاتر در دسترسه.

        import { ReactComponent as Logo } from './logo.svg'
        @@ -5491,7 +6550,10 @@ 

        فهرست

      11. -

        چرا استفاده از توابع ref callback درون خطی توصیه نمیشه؟

        +

        + چرا استفاده از توابع ref callback درون خطی توصیه نمیشه؟ + +

        اگه ref callback به عنوان یه تابع درون خطی تعریف بشه، در طول به روزرسانی دو بار فراخوانی میشه، یه بار با مقدار null و بعد دوباره با عنصر DOM. این موضوع به خاطر اینه که یه نمونه جدیدی از تابع با هر بار رندر ساخته میشه، پس ری‌اکت باید ref قبلی رو پاک کنه و یه نمونه جدید ایجاد کنه.

        class UserForm extends Component {
        @@ -5538,12 +6600,18 @@ 

        فهرست

      12. -

        render hijacking توی ری‌اکت چیه؟

        +

        + render hijacking توی ری‌اکت چیه؟ + +

        مفهوم render hijacking توانایی کنترل اینه که چه کامپوننتی خروجی بقیه کامپوننت هاست. در واقع به این معنیه که ما می تونیم با قرار دادن کامپوننت خودمون توی یه کامپوننت با اولویت بالا یه تغییراتی بهش بدیم، مثلا یه سری prop بهش اضافه کنیم یا تغییرات دیگه ای که باعث تغییر منطق رندر بشه. این در واقع hijacking رو فعال نمیکنه اما با استفاده ار HOC این امکان رو فراهم میکنیم که کامپوننت رفتار متفاوتی داشته باشه.

        فهرست

      13. -

        پیاده‌سازی factory یا سازنده HOC چطوریه؟

        +

        + پیاده‌سازی factory یا سازنده HOC چطوریه؟ + +

        دو روش اصلی برای اجرای HOC ها توی ری‌اکت وجود داره. 1. Props Proxy (PP) و 2. Inheritance Inversion (II). اونا روش های مختلفی رو برای اداره کردن WrappedComponent دنبال می کنن.

        Props Proxy

        تو این روش، متد رندر HOC یه عنصر ری‌اکت از نوع WrappedComponent رو برمی گردونه. ما هم prop هایی که HOC دریافت میکنه رو انتقال میدیم، به خاطر همین بهش میگیم Props Proxy.

        @@ -5570,7 +6638,10 @@

        فهرست

      14. -

        چطوری به یه کامپوننت ری‌اکت عدد پاس بدیم؟

        +

        + چطوری به یه کامپوننت ری‌اکت عدد پاس بدیم؟ + +

        اعداد رو باید از طریق آکولاد همونطور که رشته رو داخل کوتیشن قرار میدیم، انتقال بدیم.

           React.render(<User age={30} department={"IT"} />, document.getElementById('container'));
        @@ -5578,7 +6649,10 @@ 

        فهرست

      15. -

        لازمه همه stateها رو توی ریداکس مدیریت کنیم؟ لزومی به استفاده از state داخلی داریم؟

        +

        + لازمه همه stateها رو توی ریداکس مدیریت کنیم؟ لزومی به استفاده از state داخلی داریم؟ + +

        این به تصمیم توسعه دهنده بستگی داره. به عنوان مثال این وظیفه توسعه دهنده ست که بررسی کنه چه نوعی از state ها برنامه رو تشکیل بده و هر state کجا باید قرار بگیره. بعضی از کاربرا ترجیح میدن هر قسمت از داده رو توی ریداکس نگه دارن، تا همیشه یه ورژن پشت سر هم و کنترل شده از برنامه شون رو داشته باشن. یه عده دیگه ترجیح میدن UI State یا non-critical رو نگه دارن، مثل “is this dropdown currently open”، توی state داخلی یه کامپوننت.

        اینا قوانینی هستن که تعیین می کنن چه نوع داده ای باید توی ریداکس قرار بگیره

          @@ -5591,7 +6665,10 @@

          فهرست

        1. -

          هدف از متد registerServiceWorker توی ری‌اکت چیه؟

          +

          + هدف از متد registerServiceWorker توی ری‌اکت چیه؟ + +

          ری‌اکت به صورت پیش فرض و بدون هیچگونه پیکربندی، یه سرویس دهنده برامون ایجاد میکنه. سرویس دهنده یه API وب هستش که در ذخیره کردن asset ها و فایل های دیگه بهمون کمک میکنه تا وقتی کاربر آفلاینه یا سرعت اینترنتش پایینه، بازم بتونه نتایج رو روی صفحه ببینه. به این ترتیب بهمون کمک میکنه تجربه کاربری بهتری ایجاد کنیم و همون چیزیه که باید در مورد service worker ها بدونیم. این ها همه مواردی بود در رابطه با اضافه کردن قابلیت های آفلاین به سایتمون.

             import React from 'react';
          @@ -5605,7 +6682,10 @@ 

          فهرست

        2. -

          تابع memo ری‌اکت چیه؟

          +

          + تابع memo ری‌اکت چیه؟ + +

          Class components can be restricted from rendering when their input props are the same using PureComponent or shouldComponentUpdate. Now you can do the same with function components by wrapping them in React.memo.

          const MyComponent = React.memo(function MyComponent(props) {
          @@ -5615,7 +6695,10 @@ 

          فهرست

        3. -

          تابع lazy ری‌اکت چیه؟

          +

          + تابع lazy ری‌اکت چیه؟ + +

          The React.lazy function lets you render an dynamic import as a regular component. It will automatically load the bundle containing the OtherComponent when the component gets rendered. This must return a Promise which resolves to a module with a default export containing a React component.

          const OtherComponent = React.lazy(() => import("./OtherComponent"));
          @@ -5633,7 +6716,10 @@ 

          فهرست

        4. -

          چطوری با استفاده از تابع setState از رندر غیرضروری جلوگیری کنیم؟

          +

          + چطوری با استفاده از تابع setState از رندر غیرضروری جلوگیری کنیم؟ + +

          You can compare current value of the state with an existing state value and decide whether to rerender the page or not. If the values are same then you need to return null to stop rerendering otherwise return the latest state value. For example, the user profile information is conditionally rendered as follows,

          getUserProfile = (user) => {
          @@ -5650,7 +6736,10 @@ 

          فهرست

        5. -

          توی نسخه ۱۶ ری‌اکت چطوری میشه آرایه، Strings و یا عدد رو رندر کنیم؟

          +

          + توی نسخه ۱۶ ری‌اکت چطوری میشه آرایه، Strings و یا عدد رو رندر کنیم؟ + +

          Arrays: Unlike older releases, you don't need to make sure render method return a single element in React16. You are able to return multiple sibling elements without a wrapping element by returning an array. For example, let us take the below list of developers,

          const ReactJSDevs = () => {
          @@ -5687,7 +6776,10 @@ 

          فهرست

        6. -

          چطوری میشه از تعریف ویژگی در کلاس کامپوننت استفاده کرد؟

          +

          + چطوری میشه از تعریف ویژگی در کلاس کامپوننت استفاده کرد؟ + +

          React Class Components can be made much more concise using the class field declarations. You can initialize local state without using the constructor and declare class methods by using arrow functions without the extra need to bind them. Let's take a counter example to demonstrate class field declarations for state without using constructor and methods without binding,

          class Counter extends Component {
          @@ -5720,7 +6812,10 @@ 

          فهرست

        7. -

          hookها چی هستن؟

          +

          + hookها چی هستن؟ + +

          Hooks is a new feature that lets you use state and other React features without writing a class. Let's see an example of useState hook example,

          import { useState } from "react";
          @@ -5740,7 +6835,10 @@ 

          فهرست

        8. -

          چه قوانینی برای هوک‌ها باید رعایت بشن؟

          +

          + چه قوانینی برای هوک‌ها باید رعایت بشن؟ + +

          You need to follow two rules inorder to use hooks

          1. Call Hooks only at the top level of your react functions. i.e, You shouldn’t call Hooks inside loops, conditions, or nested functions. This will ensure that Hooks are called in the same order each time a component renders and it preserves the state of Hooks between multiple useState and useEffect calls.

          2. @@ -5749,7 +6847,10 @@

            فهرست

          3. -

            چطوری میشه از استفاده درست هوک‌ها اطمینان حاصل کرد؟

            +

            + چطوری میشه از استفاده درست هوک‌ها اطمینان حاصل کرد؟ + +

            React team released an ESLint plugin called eslint-plugin-react-hooks that enforces these two rules. You can add this plugin to your project using the below command,

            npm install eslint-plugin-react-hooks@next
            @@ -5772,7 +6873,10 @@ 

            فهرست

          4. -

            تفاوت‌های Flux و Redux چیا هستن؟

            +

            + تفاوت‌های Flux و Redux چیا هستن؟ + +

            Below are the major differences between Flux and Redux

  • @@ -5811,7 +6915,10 @@

    فهرست

  • -

    مزایای ری‌اکت روتر نسخه۴ چیه؟

    +

    + مزایای ری‌اکت روتر نسخه۴ چیه؟ + +

    Below are the main benefits of React Router V4 module,

    1. In React Router v4(version 4), the API is completely about components. A router can be visualized as a single component() which wraps specific child router components().

    2. @@ -5821,7 +6928,10 @@

      فهرست

    3. -

      می‌تونی راجع به متد componentDidCatch توضیح بدی؟

      +

      + می‌تونی راجع به متد componentDidCatch توضیح بدی؟ + +

      The componentDidCatch lifecycle method is invoked after an error has been thrown by a descendant component. The method receives two parameters,

      1. error: - The error object which was thrown

      2. @@ -5834,7 +6944,10 @@

        فهرست

      3. -

        در چه سناریویی error boundary خطا رو catch نمی‌کنه؟

        +

        + در چه سناریویی error boundary خطا رو catch نمی‌کنه؟ + +

        Below are the cases in which error boundaries doesn't work

        1. Inside Event handlers

        2. @@ -5845,7 +6958,10 @@

          فهرست

        3. -

          چرا نیازی به error boundaries برای event handlerها نیست؟

          +

          + چرا نیازی به error boundaries برای event handlerها نیست؟ + +

          Error boundaries do not catch errors inside event handlers. Event handlers don't happened or invoked during rendering time unlike render method or lifecycle methods. So React knows how to recover these kind of errors in event handlers.
          If still you need to catch an error inside event handler, use the regular JavaScript try / catch statement as below

          @@ -5875,7 +6991,10 @@

          فهرست

        4. -

          تفاوت بلوک try catch و error boundaryها چیه؟

          +

          + تفاوت بلوک try catch و error boundaryها چیه؟ + +

          Try catch block works with imperative code whereas error boundaries are meant for declarative code to render on the screen.
          For example, the try catch block used for below imperative code

          @@ -5895,12 +7014,18 @@

          فهرست

        5. -

          رفتار خطاهای uncaught در ری‌اکت 16 چیه؟

          +

          + رفتار خطاهای uncaught در ری‌اکت 16 چیه؟ + +

          In React 16, errors that were not caught by any error boundary will result in unmounting of the whole React component tree. The reason behind this decision is that it is worse to leave corrupted UI in place than to completely remove it. For example, it is worse for a payments app to display a wrong amount than to render nothing.

          فهرست

        6. -

          محل مناسب برای قرار دادن error boundary کجاست؟

          +

          + محل مناسب برای قرار دادن error boundary کجاست؟ + +

          The granularity of error boundaries usage is up to the developer based on project needs. You can follow either of these approaches,

          1. You can wrap top-level route components to display a generic error message for the entire application.

          2. @@ -5909,18 +7034,27 @@

            فهرست

          3. -

            مزیت چاپ شدن stack trace کامپوننت‌ها توی متن ارور boundary ری‌اکت چیه؟

            +

            + مزیت چاپ شدن stack trace کامپوننت‌ها توی متن ارور boundary ری‌اکت چیه؟ + +

            Apart from error messages and javascript stack, React16 will display the component stack trace with file names and line numbers using error boundary concept. For example, BuggyCounter component displays the component stack trace as below,

            stacktrace

            فهرست

          4. -

            متدی که در تعریف کامپوننت‌های class الزامیه؟

            +

            + متدی که در تعریف کامپوننت‌های class الزامیه؟ + +

            The render() method is the only required method in a class component. i.e, All methods other than render method are optional for a class component.

            فهرست

          5. -

            نوع‌های ممکن برای مقدار بازگشتی متد render چیا هستن؟

            +

            + نوع‌های ممکن برای مقدار بازگشتی متد render چیا هستن؟ + +

            Below are the list of following types used and return from render method,

            1. React elements: Elements that instruct React to render a DOM node. It includes html elements such as <div/> and user defined elements.

            2. @@ -5932,7 +7066,10 @@

              فهرست

            3. -

              هدف اصلی از متد constructor چیه؟

              +

              + هدف اصلی از متد constructor چیه؟ + +

              The constructor is mainly used for two purposes,

              1. To initialize local state by assigning object to this.state

              2. @@ -5950,12 +7087,18 @@

                فهرست

              3. -

                آیا تعریف متد سازنده توی ری‌اکت الزامیه؟

                +

                + آیا تعریف متد سازنده توی ری‌اکت الزامیه؟ + +

                No, it is not mandatory. i.e, If you don’t initialize state and you don’t bind methods, you don’t need to implement a constructor for your React component.

                فهرست

              4. -

                Default propها چی هستن؟

                +

                + Default propها چی هستن؟ + +

                The defaultProps are defined as a property on the component class to set the default props for the class. This is used for undefined props, but not for null props. For example, let us create color default prop for the button component,

                class MyButton extends React.Component {
                @@ -5976,12 +7119,18 @@ 

                فهرست

              5. -

                چرا نباید تابع setState رو توی متد componentWillUnmount فراخوانی کرد؟

                +

                + چرا نباید تابع setState رو توی متد componentWillUnmount فراخوانی کرد؟ + +

                You should not call setState() in componentWillUnmount() because Once a component instance is unmounted, it will never be mounted again.

                فهرست

              6. -

                کاربرد متد getDerivedStateFromError چیه؟

                +

                + کاربرد متد getDerivedStateFromError چیه؟ + +

                This lifecycle method is invoked after an error has been thrown by a descendant component. It receives the error that was thrown as a parameter and should return a value to update state. The signature of the lifecycle method is as follows,

                static getDerivedStateFromError(error)
                @@ -6012,7 +7161,10 @@ 

                فهرست

              7. -

                کدوم متدها و به چه ترتیبی در طول ری‌رندر فراخوانی میشن؟

                +

                + کدوم متدها و به چه ترتیبی در طول ری‌رندر فراخوانی میشن؟ + +

                An update can be caused by changes to props or state. The below methods are called in the following order when a component is being re-rendered.

                1. static getDerivedStateFromProps()

                2. @@ -6024,7 +7176,10 @@

                  فهرست

                3. -

                  کدوم متد‌ها موقع error handling فراخوانی میشن؟

                  +

                  + کدوم متد‌ها موقع error handling فراخوانی میشن؟ + +

                  Below methods are called when there is an error during rendering, in a lifecycle method, or in the constructor of any child component.

                  1. static getDerivedStateFromError()

                  2. @@ -6033,7 +7188,10 @@

                    فهرست

                  3. -

                    کارکرد ویژگی displayName چیه؟

                    +

                    + کارکرد ویژگی displayName چیه؟ + +

                    The displayName string is used in debugging messages. Usually, you don’t need to set it explicitly because it’s inferred from the name of the function or class that defines the component. You might want to set it explicitly if you want to display a different name for debugging purposes or when you create a higher-order component.
                    For example, To ease debugging, choose a display name that communicates that it’s the result of a withSubscription HOC.

                    @@ -6055,12 +7213,18 @@

                    فهرست

                  4. -

                    ساپورت مرورگرها برای برنامه ری‌اکتی چطوریه؟

                    +

                    + ساپورت مرورگرها برای برنامه ری‌اکتی چطوریه؟ + +

                    React supports all popular browsers, including Internet Explorer 9 and above, although some polyfills are required for older browsers such as IE 9 and IE 10. If you use es5-shim and es5-sham polyfill then it even support old browsers that doesn't support ES5 methods.

                    فهرست

                  5. -

                    هدف از متد unmountComponentAtNode چیه؟

                    +

                    + هدف از متد unmountComponentAtNode چیه؟ + +

                    This method is available from react-dom package and it removes a mounted React component from the DOM and clean up its event handlers and state. If no component was mounted in the container, calling this function does nothing. Returns true if a component was unmounted and false if there was no component to unmount.
                    The method signature would be as follows,

                    @@ -6069,7 +7233,10 @@

                    فهرست

                  6. -

                    code-splitting چیه؟

                    +

                    + code-splitting چیه؟ + +

                    Code-Splitting is a feature supported by bundlers like Webpack and Browserify which can create multiple bundles that can be dynamically loaded at runtime. The react project supports code splitting via dynamic import() feature.
                    For example, in the below code snippets, it will make moduleA.js and all its unique dependencies as a separate chunk that only loads after the user clicks the 'Load' button.
                    moduleA.js

                    @@ -6107,7 +7274,10 @@

                    فهرست

                  7. -

                    مزایای حالت strict چیه؟

                    +

                    + مزایای حالت strict چیه؟ + +

                    The will be helpful in the below cases

                    1. Identifying components with unsafe lifecycle methods.

                    2. @@ -6119,7 +7289,10 @@

                      فهرست

                    3. -

                      Fragmentهای دارای key هستن؟

                      +

                      + Fragmentهای دارای key هستن؟ + +

                      The Fragments declared with the explicit <React.Fragment> syntax may have keys. The general usecase is mapping a collection to an array of fragments as below,

                      function Glossary(props) {
                      @@ -6140,7 +7313,10 @@ 

                      فهرست

                    4. -

                      آیا ری‌اکت از همه‌ی attributeهای HTML پشتیبانی می‌کنه؟

                      +

                      + آیا ری‌اکت از همه‌ی attributeهای HTML پشتیبانی می‌کنه؟ + +

                      As of React 16, both standard or custom DOM attributes are fully supported. Since React components often take both custom and DOM-related props, React uses the camelCase convention just like the DOM APIs. Let us take few props with respect to standard HTML attributes,

                      <div tabIndex="-1" />      // Just like node.tabIndex DOM API
                      @@ -6151,7 +7327,10 @@ 

                      فهرست

                    5. -

                      محدودیت‌های HOCها چی هستن؟

                      +

                      + محدودیت‌های HOCها چی هستن؟ + +

                      Higher-order components come with a few caveats apart from its benefits. Below are the few listed in an order

                      1. @@ -6198,7 +7377,10 @@

                        فهرست

                      2. -

                        چطوری میشه forwardRefs رو توی DevTools دیباگ کرد؟

                        +

                        + چطوری میشه forwardRefs رو توی DevTools دیباگ کرد؟ + +

                        React.forwardRef accepts a render function as parameter and DevTools uses this function to determine what to display for the ref forwarding component. For example, If you don't name the render function or not using displayName property then it will appear as ”ForwardRef” in the DevTools,

                        const WrappedComponent = React.forwardRef((props, ref) => {
                        @@ -6233,7 +7415,10 @@ 

                        فهرست

                      3. -

                        مقدار یه props کامپوننت کی true میشه؟

                        +

                        + مقدار یه props کامپوننت کی true میشه؟ + +

                        If you pass no value for a prop, it defaults to true. This behavior is available so that it matches the behavior of HTML. For example, below expressions are equivalent,

                        <MyInput autocomplete />
                        @@ -6244,7 +7429,10 @@ 

                        فهرست

                      4. -

                        NextJS چیه و ویژگی‌های اصلیش چیا هستن؟

                        +

                        + NextJS چیه و ویژگی‌های اصلیش چیا هستن؟ + +

                        Next.js is a popular and lightweight framework for static and server‑rendered applications built with React. It also provides styling and routing solutions. Below are the major features provided by NextJS,

                        1. Server-rendered by default

                        2. @@ -6257,7 +7445,10 @@

                          فهرست

                        3. -

                          چط،وی کی‌تونیم یه تابع event handler رو به یه کامپوننت پاس بدیم؟

                          +

                          + چط،وی کی‌تونیم یه تابع event handler رو به یه کامپوننت پاس بدیم؟ + +

                          You can pass event handlers and other functions as props to child components. It can be used in child component as below,

                          <button onClick={this.handleClick}>
                          @@ -6265,7 +7456,10 @@ 

                          فهرست

                        4. -

                          استفاده از توابع arrow برای متدهای render خوبه؟

                          +

                          + استفاده از توابع arrow برای متدهای render خوبه؟ + +

                          Yes, You can use. It is often the easiest way to pass parameters to callback functions. But you need to optimize the performance while using it.

                          class Foo extends Component {
                          @@ -6281,7 +7475,10 @@ 

                          فهرست

                        5. -

                          چطوری از اجرای چندباره یه تابع جلوگیری کنیم؟

                          +

                          + چطوری از اجرای چندباره یه تابع جلوگیری کنیم؟ + +

                          If you use an event handler such as onClick or onScroll and want to prevent the callback from being fired too quickly, then you can limit the rate at which callback is executed. This can be achieved in the below possible ways,

                          1. Throttling: Changes based on a time based frequency. For example, it can be used using _.throttle lodash function

                          2. @@ -6291,7 +7488,10 @@

                            فهرست

                          3. -

                            JSX چطوری از حمله‌های Injection جلوگیری می‌کنه؟

                            +

                            + JSX چطوری از حمله‌های Injection جلوگیری می‌کنه؟ + +

                            React DOM escapes any values embedded in JSX before rendering them. Thus it ensures that you can never inject anything that’s not explicitly written in your application. Everything is converted to a string before being rendered. For example, you can embed user input as below,

                            const name = response.potentiallyMaliciousInput;
                            @@ -6301,7 +7501,10 @@ 

                            فهرست

                          4. -

                            چطوری elementهای رندر شده رو آپدیت کنیم؟

                            +

                            + چطوری elementهای رندر شده رو آپدیت کنیم؟ + +

                            You can update UI(represented by rendered element) by passing the newly created element to ReactDOM's render method. For example, lets take a ticking clock example, where it updates the time by calling render method multiple times,

                            function tick() {
                            @@ -6319,7 +7522,10 @@ 

                            فهرست

                          5. -

                            چرا propها read only هستن؟

                            +

                            + چرا propها read only هستن؟ + +

                            When you declare a component as a function or a class, it must never modify its own props. Let us take a below capital function,

                            function capital(amount, interest) {
                            @@ -6330,7 +7536,10 @@ 

                            فهرست

                          6. -

                            چرا میگیم تابع setState از طریق merge کردن state را مدیریت می‌کنه؟

                            +

                            + چرا میگیم تابع setState از طریق merge کردن state را مدیریت می‌کنه؟ + +

                            When you call setState() in the component, React merges the object you provide into the current state. For example, let us take a facebook user with posts and comments details as state variables,

                              constructor(props) {
                            @@ -6361,7 +7570,10 @@ 

                            فهرست

                          7. -

                            چطوری می‌تونیم به متد event handler پارامتر پاس بدیم؟

                            +

                            + چطوری می‌تونیم به متد event handler پارامتر پاس بدیم؟ + +

                            During iterations or loops, it is common to pass an extra parameter to an event handler. This can be achieved through arrow functions or bind method. Let us take an example of user details updated in a grid,

                            <button onClick={(e) => this.updateUser(userId, e)}>Update User details</button>
                            @@ -6371,7 +7583,10 @@ 

                            فهرست

                          8. -

                            چطوری از رندر مجدد کامپوننت‌ها جلوگیری کنیم؟

                            +

                            + چطوری از رندر مجدد کامپوننت‌ها جلوگیری کنیم؟ + +

                            You can prevent component from rendering by returning null based on specific condition. This way it can conditionally render component.

                            function Greeting(props) {
                            @@ -6403,7 +7618,10 @@ 

                            فهرست

                          9. -

                            شرایطی که بدون مشکل پرفورمنس بتونیم از ایندکس به عنوان key استفاده کنیم چی هست؟

                            +

                            + شرایطی که بدون مشکل پرفورمنس بتونیم از ایندکس به عنوان key استفاده کنیم چی هست؟ + +

                            There are three conditions to make sure, it is safe use the index as a key.

                            1. The list and items are static– they are not computed and do not change

                            2. @@ -6413,7 +7631,10 @@

                              فهرست

                            3. -

                              keyهای ری‌اکت باید به صورت عمومی منحصر بفرد باشن؟

                              +

                              + keyهای ری‌اکت باید به صورت عمومی منحصر بفرد باشن؟ + +

                              Keys used within arrays should be unique among their siblings but they don’t need to be globally unique. i.e, You can use the same keys withtwo different arrays. For example, the below book component uses two arrays with different arrays,

                              function Book(props) {
                              @@ -6443,7 +7664,10 @@ 

                              فهرست

                            4. -

                              گزینه‌های محبوب برای مدیریت فرم‌ها توی ری‌اکت چیا هستن؟

                              +

                              + گزینه‌های محبوب برای مدیریت فرم‌ها توی ری‌اکت چیا هستن؟ + +

                              Formik is a form library for react which provides solutions such as validation, keeping track of the visited fields, and handling form submission. In detail, You can categorize them as follows,

                              1. Getting values in and out of form state

                              2. @@ -6454,7 +7678,10 @@

                                فهرست

                              3. -

                                مزایای کتابخانه فرمیک نبست به redux form چیه؟

                                +

                                + مزایای کتابخانه فرمیک نبست به redux form چیه؟ + +

                                Below are the main reasons to recommend formik over redux form library

                                1. The form state is inherently short-term and local, so tracking it in Redux (or any kind of Flux library) is unnecessary.

                                2. @@ -6464,13 +7691,19 @@

                                  فهرست

                                3. -

                                  چرا اجباری برای استفاده از ارث‌بری توی ری‌اکت نیست؟ مزیتی داره؟

                                  +

                                  + چرا اجباری برای استفاده از ارث‌بری توی ری‌اکت نیست؟ مزیتی داره؟ + +

                                  In React, it is recommend using composition instead of inheritance to reuse code between components. Both Props and composition give you all the flexibility you need to customize a component’s look and behavior in an explicit and safe way.
                                  Whereas, If you want to reuse non-UI functionality between components, it is suggested to extracting it into a separate JavaScript module. Later components import it and use that function, object, or a class, without extending it.

                                  فهرست

                                4. -

                                  می‌تونیم از web components توی برنامه ری‌اکت استفاده کنیم؟

                                  +

                                  + می‌تونیم از web components توی برنامه ری‌اکت استفاده کنیم؟ + +

                                  Yes, you can use web components in a react application. Even though many developers won't use this combination, it may require especially if you are using third-party UI components that are written using Web Components. For example, let us use Vaadin date picker web component as below,

                                  import React, { Component } from "react";
                                  @@ -6490,7 +7723,10 @@ 

                                  فهرست

                                5. -

                                  dynamic import چیه؟

                                  +

                                  + dynamic import چیه؟ + +

                                  The dynamic import() syntax is a ECMAScript proposal not currently part of the language standard. It is expected to be accepted in the near future. You can achieve code-splitting into your app using dynamic import(). Let's take an example of addition,

                                  1. Normal Import

                                  2. @@ -6508,7 +7744,10 @@

                                    فهرست

                                  3. -

                                    loadable componentها چی هستن؟

                                    +

                                    + loadable componentها چی هستن؟ + +

                                    If you want to do code-splitting in a server rendered app, it is recommend to use Loadable Components because React.lazy and Suspense is not yet available for server-side rendering. Loadable lets you render a dynamic import as a regular component. Lets take an example,

                                    import loadable from "@loadable/component";
                                    @@ -6527,7 +7766,10 @@ 

                                    فهرست

                                  4. -

                                    کامپوننت suspense چیه؟

                                    +

                                    + کامپوننت suspense چیه؟ + +

                                    If the module containing the dynamic import is not yet loaded by the time parent component renders, you must show some fallback content while you’re waiting for it to load using a loading indicator. This can be done using Suspense component. For example, the below code uses suspense component,

                                    const OtherComponent = React.lazy(() => import("./OtherComponent"));
                                    @@ -6546,7 +7788,10 @@ 

                                    فهرست

                                  5. -

                                    چطوری به ازای route می‌تونیم code splitting داشته باشیم؟

                                    +

                                    + چطوری به ازای route می‌تونیم code splitting داشته باشیم؟ + +

                                    One of the best place to do code splitting is with routes. The entire page is going to re-render at once so users are unlikely to interact with other elements in the page at the same time. Due to this, the user experience won't be disturbed. Let us take an example of route based website using libraries like React Router with React.lazy,

                                    import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
                                    @@ -6570,7 +7815,10 @@ 

                                    فهرست

                                  6. -

                                    یه مثال از نحوه استفاده از context میزنی؟

                                    +

                                    + یه مثال از نحوه استفاده از context میزنی؟ + +

                                    Context is designed to share data that can be considered global for a tree of React components. For example, in the code below lets manually thread through a “theme” prop in order to style the Button component.

                                    //Lets create a context with a default theme value "luna"
                                    @@ -6604,7 +7852,10 @@ 

                                    فهرست

                                  7. -

                                    هدف از مقدار پیش‌فرض توی context چیه؟

                                    +

                                    + هدف از مقدار پیش‌فرض توی context چیه؟ + +

                                    The defaultValue argument is only used when a component does not have a matching Provider above it in the tree. This can be helpful for testing components in isolation without wrapping them. Below code snippet provides default theme value as Luna.

                                    const MyContext = React.createContext(defaultValue);
                                    @@ -6612,7 +7863,10 @@ 

                                    فهرست

                                  8. -

                                    چظوری از contextType استفاده می‌کنین؟

                                    +

                                    + چظوری از contextType استفاده می‌کنین؟ + +

                                    ContextType is used to consume the context object. The contextType property can be used in two ways,

                                    1. contextType as property of class:
                                      @@ -6654,7 +7908,10 @@

                                      فهرست

                                    2. -

                                      consumer چیه؟

                                      +

                                      + consumer چیه؟ + +

                                      A Consumer is a React component that subscribes to context changes. It requires a function as a child which receives current context value as argument and returns a react node. The value argument passed to the function will be equal to the value prop of the closest Provider for this context above in the tree. Lets take a simple example,

                                      <MyContext.Consumer>
                                      @@ -6664,7 +7921,10 @@ 

                                      فهرست

                                    3. -

                                      چطوری مسائل مربوط به پرفورمنس با context رو حل می‌کنین؟

                                      +

                                      + چطوری مسائل مربوط به پرفورمنس با context رو حل می‌کنین؟ + +

                                      The context uses reference identity to determine when to re-render, there are some gotchas that could trigger unintentional renders in consumers when a provider’s parent re-renders. For example, the code below will re-render all consumers every time the Provider re-renders because a new object is always created for value.

                                      class App extends React.Component {
                                      @@ -6699,7 +7959,10 @@ 

                                      فهرست

                                    4. -

                                      هدف از forward ref توی HOCها چیه؟

                                      +

                                      + هدف از forward ref توی HOCها چیه؟ + +

                                      Refs will not get passed through because ref is not a prop. It handled differently by React just like key. If you add a ref to a HOC, the ref will refer to the outermost container component, not the wrapped component. In this case, you can use Forward Ref API. For example, we can explicitly forward refs to the inner FancyButton component using the React.forwardRef API.
                                      The below HOC logs all props,

                                      @@ -6745,17 +8008,26 @@

                                      فهرست

                                    5. -

                                      توی کامپوننت‌ها می‌تونیم پراپ ref داشته باشیم؟

                                      +

                                      + توی کامپوننت‌ها می‌تونیم پراپ ref داشته باشیم؟ + +

                                      Regular function or class components don’t receive the ref argument, and ref is not available in props either. The second ref argument only exists when you define a component with React.forwardRef call.

                                      فهرست

                                    6. -

                                      چرا در هنگام استفاده از ForwardRefها نیاز به احتیاط بیشتری در استفاده از کتابخانه های جانبی داریم؟

                                      +

                                      + چرا در هنگام استفاده از ForwardRefها نیاز به احتیاط بیشتری در استفاده از کتابخانه های جانبی داریم؟ + +

                                      When you start using forwardRef in a component library, you should treat it as a breaking change and release a new major version of your library. This is because your library likely has a different behavior such as what refs get assigned to, and what types are exported. These changes can break apps and other libraries that depend on the old behavior.

                                      فهرست

                                    7. -

                                      چطوری بدون استفاده از ES6 کلاس کامپوننت بسازیم؟

                                      +

                                      + چطوری بدون استفاده از ES6 کلاس کامپوننت بسازیم؟ + +

                                      If you don’t use ES6 then you may need to use the create-react-class module instead. For default props, you need to define getDefaultProps() as a function on the passed object. Whereas for initial state, you have to provide a separate getInitialState method that returns the initial state.

                                      var Greeting = createReactClass({
                                      @@ -6779,7 +8051,10 @@ 

                                      فهرست

                                    8. -

                                      استفاده از ری‌اکت بدون JSX ممکن است؟

                                      +

                                      + استفاده از ری‌اکت بدون JSX ممکن است؟ + +

                                      Yes, JSX is not mandatory for using React. Actually it is convenient when you don’t want to set up compilation in your build environment. Each JSX element is just syntactic sugar for calling React.createElement(component, props, ...children). For example, let us take a greeting example with JSX,

                                      class Greeting extends React.Component {
                                      @@ -6809,7 +8084,10 @@ 

                                      فهرست

                                    9. -

                                      الگوریتم‌های diffing ری‌اکت چی هستن؟

                                      +

                                      + الگوریتم‌های diffing ری‌اکت چی هستن؟ + +

                                      React needs to use algorithms to find out how to efficiently update the UI to match the most recent tree. The diffing algorithms is generating the minimum number of operations to transform one tree into another. However, the algorithms have a complexity in the order of O(n3) where n is the number of elements in the tree.
                                      In this case, for displaying 1000 elements would require in the order of one billion comparisons. This is far too expensive. Instead, React implements a heuristic O(n) algorithm based on two assumptions:

                                        @@ -6819,7 +8097,10 @@

                                        فهرست

                                      1. -

                                        قوانینی که توسط الگوریتم‌های diffing پوشش داده می‌شوند کدام هستن؟

                                        +

                                        + قوانینی که توسط الگوریتم‌های diffing پوشش داده می‌شوند کدام هستن؟ + +

                                        When diffing two trees, React first compares the two root elements. The behavior is different depending on the types of the root elements. It covers the below rules during reconciliation algorithm,

                                        1. Elements Of Different Types:
                                          @@ -6865,7 +8146,10 @@

                                          فهرست

                                        2. -

                                          چه موقعی نیاز هست که از refها استفاده کنیم؟

                                          +

                                          + چه موقعی نیاز هست که از refها استفاده کنیم؟ + +

                                          There are few use cases to go for refs

                                          1. Managing focus, text selection, or media playback.

                                          2. @@ -6875,7 +8159,10 @@

                                            فهرست

                                          3. -

                                            برای استفاده از render propها لازمه که اسم prop رو render بزاریم؟

                                            +

                                            + برای استفاده از render propها لازمه که اسم prop رو render بزاریم؟ + +

                                            Even though the pattern named render props, you don’t have to use a prop named render to use this pattern. i.e, Any prop that is a function that a component uses to know what to render is technically a “render prop”. Lets take an example with the children prop for render props,

                                            <Mouse
                                            @@ -6905,12 +8192,18 @@ 

                                            فهرست

                                          4. -

                                            مشکل استفاده از render props با pure componentها چیه؟

                                            +

                                            + مشکل استفاده از render props با pure componentها چیه؟ + +

                                            If you create a function inside a render method, it negates the purpose of pure component. Because the shallow prop comparison will always return false for new props, and each render in this case will generate a new value for the render prop. You can solve this issue by defining the render function as instance method.

                                            فهرست

                                          5. -

                                            چطوری با استفاده از render props می‌تونیم HOC ایجاد کنیم؟

                                            +

                                            + چطوری با استفاده از render props می‌تونیم HOC ایجاد کنیم؟ + +

                                            You can implement most higher-order components (HOC) using a regular component with a render prop. For example, if you would prefer to have a withMouse HOC instead of a component, you could easily create one using a regular with a render prop.

                                            function withMouse(Component) {
                                            @@ -6929,12 +8222,18 @@ 

                                            فهرست

                                          6. -

                                            تکنیک windowing چیه؟

                                            +

                                            + تکنیک windowing چیه؟ + +

                                            Windowing is a technique that only renders a small subset of your rows at any given time, and can dramatically reduce the time it takes to re-render the components as well as the number of DOM nodes created. If your application renders long lists of data then this technique is recommended. Both react-window and react-virtualized are popular windowing libraries which provides several reusable components for displaying lists, grids, and tabular data.

                                            فهرست

                                          7. -

                                            توی JSX یه مقدار falsy رو چطوری چاپ کنیم؟

                                            +

                                            + توی JSX یه مقدار falsy رو چطوری چاپ کنیم؟ + +

                                            The falsy values such as false, null, undefined, and true are valid children but they don't render anything. If you still want to display them then you need to convert it to string. Let's take an example on how to convert to a string,

                                            <div>My JavaScript variable is {String(myVariable)}.</div>
                                            @@ -6942,12 +8241,18 @@ 

                                            فهرست

                                          8. -

                                            یه مورد استفاده معمول از portals مثال میزنی؟

                                            +

                                            + یه مورد استفاده معمول از portals مثال میزنی؟ + +

                                            React portals are very useful when a parent component has overflow: hidden or has properties that affect the stacking context(z-index,position,opacity etc styles) and you need to visually “break out” of its container. For example, dialogs, global message notifications, hovercards, and tooltips.

                                            فهرست

                                          9. -

                                            توی کامپوننت‌های کنترل نشده چطوری مقداری پیش فرض اضافه کنیم؟

                                            +

                                            + توی کامپوننت‌های کنترل نشده چطوری مقداری پیش فرض اضافه کنیم؟ + +

                                            In React, the value attribute on form elements will override the value in the DOM. With an uncontrolled component, you might want React to specify the initial value, but leave subsequent updates uncontrolled. To handle this case, you can specify a defaultValue attribute instead of value.

                                            render() {
                                            @@ -6969,13 +8274,19 @@ 

                                            فهرست

                                          10. -

                                            stack موردعلاقه شما برای کانفیگ پروژه ری‌اکت چیه؟

                                            +

                                            + stack موردعلاقه شما برای کانفیگ پروژه ری‌اکت چیه؟ + +

                                            Even though the tech stack varies from developer to developer, the most popular stack is used in react boilerplate project code. It mainly uses Redux and redux-saga for state management and asynchronous side-effects, react-router for routing purpose, styled-components for styling react components, axios for invoking REST api, and other supported stack such as webpack, reselect, ESNext, Babel.
                                            You can clone the project https://github.com/react-boilerplate/react-boilerplate and start working on any new react project.

                                            فهرست

                                          11. -

                                            تفاوت‌ DOM واقعی و Virtual DOM چیه؟

                                            +

                                            + تفاوت‌ DOM واقعی و Virtual DOM چیه؟ + +

                                            Below are the main differences between Real DOM and Virtual DOM,

  • @@ -7010,7 +8321,10 @@

    فهرست

  • -

    چطوری Bootstrap رو به یه برنامه ری‌اکتی اضافه کنیم؟

    +

    + چطوری Bootstrap رو به یه برنامه ری‌اکتی اضافه کنیم؟ + +

    Bootstrap can be added to your React app in a three possible ways

    1. Using the Bootstrap CDN:
      @@ -7033,7 +8347,10 @@

      فهرست

    2. -

      می‌تونی یه لیسستی از معروف‌ترین وب‌سایت‌هایی که از ری‌اکت استفاده می‌کنن رو بگی؟

      +

      + می‌تونی یه لیسستی از معروف‌ترین وب‌سایت‌هایی که از ری‌اکت استفاده می‌کنن رو بگی؟ + +

      این زیر یه لیست از 10 وب‌سایت‌ مشهور که از ری‌اکت برای فرانت‌اندشون استفاده می‌کنن رو لیست می‌کنیم:

      1. Facebook

      2. @@ -7050,17 +8367,26 @@

        فهرست

      3. -

        استفاده از تکنیک CSS In JS تو ری‌اکت توصیه میشه؟

        +

        + استفاده از تکنیک CSS In JS تو ری‌اکت توصیه میشه؟ + +

        ری‌اکت هیچ‌ ایده‌ای راجع به اینکه استایل‌ها چطوری تعریف شدن نداره اما اگه تازه کار باشین می‌تونین از یه فایل جداگانه *.css که مث قبلا توی پروژه‌های ساده استفاده می‌شد کمک بگیرین و با استفاده از className از استایل‌ها استفاده کنین. CSS In Js یه بخش از خود ری‌اکت نیست و توسط کتابخونه‌های third-party بهش اضافه شده اما اگه می‌خوایین. ازش(CSS-In-JS) استفاده کنین کتابخونه styled-components می‌تونه گزینه خوبی باشه.

        فهرست

      4. -

        لازمه همه کلاس کامپوننت‌ها رو تبدیل کنیم به هوک؟

        +

        + لازمه همه کلاس کامپوننت‌ها رو تبدیل کنیم به هوک؟ + +

        نه. ولی می‌تونین از هوک‌ها توی بعضی از کامپوننت‌های قدیمی یا جدید استفاده کنین و سعی کنین باهاش راحت باشین البته برنامه‌ای برای حذف classes از ری‌اکت هنوز وجود نداره.

        فهرست

      5. -

        چطوری میشه با هوک‌های ری‌اکت دیتا fetch کرد؟

        +

        + چطوری میشه با هوک‌های ری‌اکت دیتا fetch کرد؟ + +

        هوک این افکت اسمش useEffect هستش و میشه خیلی ساده ازش برای فراخوانی API با استفاده از axios استفاده کرد. نتیجه درخواست رو هم خیلی ساده میشه ریخت تو یه state داخلی از component که وظیفه این ثبت شدن داده رو هم تابع setter از useState به عهده می‌گیره.
        خب بزارین یه مثال بزنیم که لیست مقالات رو از یه API می‌گیره:

        @@ -7095,12 +8421,18 @@

        فهرست

      6. -

        هوک‌ها همه موارد کاربرد کلاس‌ها رو پوشش میده؟

        +

        + هوک‌ها همه موارد کاربرد کلاس‌ها رو پوشش میده؟ + +

        هوک‌ها میشه گفت همه موارد کارکردی کلاس‌ها رو پوشش نمیدن ولی با اضافه شدن هوک‌های جدید برنامه‌های خوبی برای آینده هوک‌ها پیش‌بینی میشه. در حال حاضر هیچ هوکی وجود نداره که کارکرد متد‌های getSnapshotBeforeUpdate و componentDidCatch رو محقق کنه.

        فهرست

      7. -

        نسخه پایدار ری‌اکت که از هوک پشتیبانی می‌کنه کدومه؟

        +

        + نسخه پایدار ری‌اکت که از هوک پشتیبانی می‌کنه کدومه؟ + +

        ری‌اکت حالت پایداری از هوک‌ها رو توی نسخه 16.8 برای پکیج‌های زیر منتشر کرد:

        1. React DOM

        2. @@ -7111,7 +8443,10 @@

          فهرست

        3. -

          چرا از حالت destructuring آرایه برای useState استفاده می‌کنیم؟

          +

          + چرا از حالت destructuring آرایه برای useState استفاده می‌کنیم؟ + +

          وقتی که با استفاده از هوک useState یه state رو معرفی می‌کنیم، یه آرایه دوتایی برمی‌گردونه که اندیس اولش متغیر مورد نظر برای دسترسی به state هست و اندیس درم متد setter یا تغییر دهنده اون state. یه روش اینه که با استفاده از اندیس‌های آرایه و [0] و [1] بهشون دسترسی پیدا کنیم ولی یه کم ممکنه گیچ کننده باشه. ولی با استفاده از حالت destructuring خیلی ساده‌تر میشه این کار رو انجام داد.
          برای مثال دسترسی به state با اندیس‌های آرایه این شکلی میشد:

          @@ -7126,7 +8461,10 @@

          فهرست

        4. -

          منابعی که باعث معرفی ایده هوک‌ها شدن چیا بودن؟

          +

          + منابعی که باعث معرفی ایده هوک‌ها شدن چیا بودن؟ + +

          ایده معرفی هوک از منابع مختلفی به وجود اومد. این پایین یه لیستی ازشون رو میاریم:

          1. تجربه قبلی که با functional API توی پکیج react-future داشتن

          2. @@ -7138,12 +8476,18 @@

            فهرست

          3. -

            چطوری به APIهای ضروری اجزای وب دسترسی پیدا کنیم؟

            +

            + چطوری به APIهای ضروری اجزای وب دسترسی پیدا کنیم؟ + +

            کامپوننت‌های web اکثرا به عنوان APIهای imperative برای اجرای یه وظیفه خاص قلمداد می‌شن. برای استفاده ازشون باید با استفاده از ref که امکان کار با DOM را فراهم می‌کنه بیاییم یه کامپوننت که به شکل imperative کار می‌کنه ایجاد کنیم. ولی اگه از وب کامپوننت‌های کاستوم یا همون third-party استفاده می‌کنیم، بهترین کار نوشتن یه کامپوننت wrapper برای استفاده از اون وب کامپوننت هست.

            فهرست

          4. -

            formik چیه؟

            +

            + formik چیه؟ + +

            Formik یه کتابخونه ری‌اکت هست که امکان حل سه مشکل اساسی رو فراهم می‌کنه:

            1. دریافت و مدیریت مقادیر از state

            2. @@ -7153,27 +8497,42 @@

              فهرست

            3. -

              middlewareهای مرسوم برای مدیریت ارتباط‌های asynchronous توی Redux چیا هستن؟

              +

              + middlewareهای مرسوم برای مدیریت ارتباط‌های asynchronous توی Redux چیا هستن؟ + +

              یه سری از میان‌افزارهای(middleware) معروف برای مدیریت فراخوانی actionهایی که به شکل asynchronous توی Redux فراخوانی میشن اینا هستن: Redux Thunk، Redux Promise و Redux Saga.

              فهرست

            4. -

              مرورگرها کد JSX رو متوجه میشن؟

              +

              + مرورگرها کد JSX رو متوجه میشن؟ + +

              نه، مرورگرها نمی‌تونن کد JSX رو متوجه بشن. مجبوریم که از یه transpiler برای تبدیل کد JSX به کد جاواسکریپت عادی که مرورگرها متوجه میشن تبدیل کنیم. مشهورترین transpiler در حال حاضر Babel هست که برای اینکار استفاده میشه.

              فهرست

            5. -

              Data flow یا جریان داده ری‌اکت رو توضیح میدی؟

              +

              + Data flow یا جریان داده ری‌اکت رو توضیح میدی؟ + +

              ری‌اکت از روش جربان داده یک طرفه استفاده می‌کنه. استفاده از prop باعث میشه از تکرار موارد بدیهی جلوگیری بشه و درک کردنش ساده‌تر از روش سنتی data-binding دو طرفه باشه.

              فهرست

            6. -

              react scripts چیه؟

              +

              + react scripts چیه؟ + +

              پکیج react-scripts یه مجموعه از اسکریپت‌هاست که توی create-react-app برای ایجاد سریع و ساده پروژه ری‌اکتی ازشون استفاده میشه. دستور react-scripts start محیط توسعه کد رو ایجاد‌می‌کنه و یه سرور براتون استارت می‌کنه که از لود درلحظه و داغ ماژول‌ها پشتیبانی می‌کنه.

              فهرست

            7. -

              ویژگی‌های create react app چیه؟

              +

              + ویژگی‌های create react app چیه؟ + +

              این پایین به یه سری از ویژگی‌های create-react-app رو لیست می‌کنیم.

              1. ساپورت کامل از React، JSX، ES6، Typescript و Flow

              2. @@ -7187,13 +8546,19 @@

                فهرست

              3. -

                هدف از متد renderToNodeStream چیه؟

                +

                + هدف از متد renderToNodeStream چیه؟ + +

                متد ReactDOMServer#renderToNodeStream برای تولید HTML روی سرور و ارسال اون به درخواست initial کاربر استفاده می‌شه که باعث میشه صفحات سریع‌تر لود بشن. البته علاوه بر سرعت، به موتورهای جستجو این امکان رو میده که وبسایت شما رو به سادگی crawl کنن و SEO سایت بهتر بشه.
                Note: البته یادتون باشه که این متد توی مرورگر قابل اجرا نیست و فقط روی سرور کار می‌کنه.

                فهرست

              4. -

                MobX چیه؟

                +

                + MobX چیه؟ + +

                MobX یه راه‌حل ساده، scalable برای مدیریت state هست که خیلی قوی تست شده. این روش برای برنامه‌نویسی تابعی کنش‌گرا(TFRP) استفاده می‌شه. برای برنامه‌های ری‌اکتی لازمه که پکیج‌های زیر رو نصب کنین:

                npm install mobx --save
                @@ -7202,7 +8567,10 @@ 

                فهرست

              5. -

                تفاوت‌های بین Redux و MobX چیا هستن؟

                +

                + تفاوت‌های بین Redux و MobX چیا هستن؟ + +

                این پایین یه سری از اصلی‌ترین تفاوت‌های Redux و MobX رو میگیم:

  • @@ -7248,7 +8616,10 @@

    فهرست

  • -

    لازمه قبل از شروع ری‌اکت ES6 رو یاد گرفت؟

    +

    + لازمه قبل از شروع ری‌اکت ES6 رو یاد گرفت؟ + +

    نه، اجبار برای یاد‌گرفتن es2015/es6 برای کار با ری‌اکت وجود نداره. ولی توصیه شدیدی میشه که یاد بگیریدش چون منابع خیلی زیادی هستن که به شکل پیش‌فرض با es6 کار شدن. بزارین یه نگاه کلی به مواردی که الزاما با es6 کارشدن رو ذکر کنیم:

    1. Destructuring: برای گرفتن مقادیر prop و استفاده از اونا توی کامپوننت

    2. @@ -7285,7 +8656,10 @@

      فهرست

    3. -

      Concurrent Rendering چیه؟

      +

      + Concurrent Rendering چیه؟ + +

      Concurrent rendering باعث میشه برنامه ری‌اکتی بتونه توی رندر کردن درخت کامپوننت‌ها به شکل مسئولانه‌تری عمل کنه و انجام این رندر رو بدون بلاک کردن thread اصلی مرورگر انجام بده. این امر به ری‌اکت این اجازه رو میده که بتونه اجرا شدن یه رندر طولانی رو به بخش‌های مرتب شده بر اساس اولویت تقسیم کنه و توی پیک‌های مختلف رندر رو انجام بده. برای مثال وقتی حالت concurrent فعال باشه، ری‌اکت یه نیم نگاهی هم به بقیه تسک‌هایی که هنوز انجام نشدن داره و اگه تسک با اولویت دیگه‌ای رو ببینه، حالت فعلی که داشت رندر می‌کرد رو متوقف می‌کنه و به انجام کار با اولویت‌تر می‌رسه. این حالت رو به دو روش میشه فعال کرد:

      ۱. برای یه بخش از برنامه با wrap کردن کامپوننت توی تگ concurrent :

      @@ -7300,12 +8674,18 @@

      فهرست

    4. -

      تفاوت بین حالت async و concurrent چیه؟

      +

      + تفاوت بین حالت async و concurrent چیه؟ + +

      هر دوتاشون به یه چیز اشاره می‌کنن. قبلا حالت concurrent با عنوان "Async Mode" توسط تیم ری‌اکت معرفی می‌شد. عنوان این قابلیت به این دلیل تغییر پیدا کرد که قابلیت ری‌اکت برای کار روی مرحله‌های با اولویت متفاوت رو نشون بده. همین موضوع جلوی اشتباهات در مورد طرز تفکر راجع به رندر کردن async رو می‌گیره.

      فهرست

    5. -

      می تونیم از آدرس‌های دارای url جاواسکریپت در ری‌اکت 16.9 استفاده کرد؟

      +

      + می تونیم از آدرس‌های دارای url جاواسکریپت در ری‌اکت 16.9 استفاده کرد؟ + +

      آره، میشه از javascript: استفاده کرد ولی یه warning توی کنسول برامون نشون داده میشه. چون آدرس‌هایی که با javascript: شروغ میشن خطرناکن و می‌تونن باعث ایجاد باگ امنیتی توی برنامه بشن.

      const companyProfile = {
      @@ -7318,7 +8698,10 @@ 

      فهرست

    6. -

      هدف از پلاگین eslint برای هوک‌ها چیه؟

      +

      + هدف از پلاگین eslint برای هوک‌ها چیه؟ + +

      پلاگین ESLint میاد یه‌سری قوانین برای درست نوشت هوک‌ها رو توی برنامه الزامی می‌کنه. روش تشخیص دادن هوک‌ها هم اینطوریه که میگه اگه اسم تابعی با ”use” شروع بشه و درست بعد اون یه حرف بزرگ بیاد پس اون تابع هوک هستش. این پلاگین در حالت پایه این دوتا شرط رو الزام می‌کنه:

      1. فراخوانی هوک‌ها یا باید داخل یه تابع که عنوانش PascalCase هست (منظور یه کامپوننته) یا یه تابع دیگه که مثلا useSomething هست (custom هوک) انجام بشه.

      2. @@ -7327,7 +8710,10 @@

        فهرست

      3. -

        تفاوت‌های Imperative و Declarative توی ری‌اکت چیه؟

        +

        + تفاوت‌های Imperative و Declarative توی ری‌اکت چیه؟ + +

        یه کامپوننت ساده UI رو تصور کنین، مثلا یه دکمه "لایک". وقتی که روش کلیک می‌کنین رنگ از خاکستری به آبی تغییر پیدا می‌کنه و اگه دوباره کلیک کنید باز خاکستری میشه.
        رویش imperative برای انجام این کار اینطوریه:

        @@ -7354,7 +8740,10 @@

        فهرست

      4. -

        مزایای استفاده از تایپ اسکریپت با ری‌اکت چیه؟

        +

        + مزایای استفاده از تایپ اسکریپت با ری‌اکت چیه؟ + +

        یه سری از مزایای استفاده از typescript با Reactjs اینا هستن:

        1. می‌تونیم از آخرین ویژگی‌های جاواسکریپت استفاده کنیم

        2. diff --git a/images/bookmark-fill.png b/images/bookmark-fill.png new file mode 100644 index 00000000..59c4737f Binary files /dev/null and b/images/bookmark-fill.png differ diff --git a/images/bookmark-outline.png b/images/bookmark-outline.png new file mode 100644 index 00000000..66b7f229 Binary files /dev/null and b/images/bookmark-outline.png differ