|
96 | 96 | |79 | [روش توضیه شده برای نامگذاری کامپوننتها چیه؟](#روش-توضیه-شده-برای-نامگذاری-کامپوننتها-چیه) |
|
97 | 97 | |80 | [روش توصیه شده برای ترتیب متدها در کلاس کامپوننتها چیه؟](#روش-توصیه-شده-برای-ترتیب-متدها-در-کلاس-کامپوننتها-چیه) |
|
98 | 98 | |81 | [کامپوننت تعویض کننده یا switching چیه؟](#کامپوننت-تعویض-کننده-یا-switching-چیه) |
|
99 |
| -|82 | [چرت نیاز میشه به تایع setState یه فانکشن callback پاس بدیم؟](#چرت-نیاز-میشه-به-تایع-setState-یه-فانکشن-callback-پاس-بدیم) | |
| 99 | +|82 | [چرا نیاز میشه به تایع setState یه فانکشن callback پاس بدیم؟](#چرا-نیاز-میشه-به-تایع-setState-یه-فانکشن-callback-پاس-بدیم) | |
100 | 100 | |83 | [حالت strict توی ریاکت چیکار میکنه؟](#حالت-strict-توی-ریاکت-چیکار-میکنه) |
|
101 | 101 | |84 | [Mixinهای ریاکت چی هستن؟](#Mixinهای-ریاکت-چی-هستن) |
|
102 | 102 | |85 | [چرا isMounted آنتی پترن هست و روش بهتر انجامش چیه؟](#چرا-isMounted-آنتی-پترن-هست-و-روش-بهتر-انجامش-چیه) |
|
|
1575 | 1575 |
|
1576 | 1576 | 51. ### چطوری propهای کامپوننت رو اعتبارسنجی کنیم؟
|
1577 | 1577 |
|
1578 |
| - وقتی برنامه توی حالت *development* یا توسعه هست، ریاکت به شکل خودکار تمام propهایی که ما توی کامپوننت استفاده کردیم رو چک میکنه تا مطمئن بشه همهشون type درستی دارن. اگه هر کدوم از propها *type درستی* نداشته باشن توی کنسول بهمون یه warning نشون میده، البته توی حالت *production* این حالت غیر فعاله. |
1579 |
| - propهای اجباری با پراپرتی isRequired مشخص میشن، همچنین یهسری انواع prop پیشفرض وجود دارن که پایین میاریمشون : |
| 1578 | + وقتی برنامه توی حالت *development* یا توسعه هست، ریاکت به شکل خودکار تمام propهایی که ما توی کامپوننت استفاده کردیم رو چک میکنه تا مطمئن بشه همهشون type درستی دارن. اگه هر کدوم از propها *type درستی* نداشته باشن توی کنسول بهمون یه warning نشون میده، البته توی حالت *production* این حالت غیر فعاله. |
| 1579 | + propهای اجباری با پراپرتی isRequired مشخص میشن، همچنین یهسری انواع prop پیشفرض وجود دارن که پایین میاریمشون : |
1580 | 1580 |
|
1581 |
| - 1. **PropTypes.number** |
1582 |
| - 2. **PropTypes.string** |
1583 |
| - 3. **PropTypes.array** |
1584 |
| - 4. **PropTypes.object** |
1585 |
| - 5. **PropTypes.func** |
1586 |
| - 6. **PropTypes.node** |
1587 |
| - 7. **PropTypes.element** |
1588 |
| - 8. **PropTypes.bool** |
1589 |
| - 9. **PropTypes.symbol** |
1590 |
| - 10. **PropTypes.any** |
| 1581 | + 1. **PropTypes.number** |
| 1582 | + 2. **PropTypes.string** |
| 1583 | + 3. **PropTypes.array** |
| 1584 | + 4. **PropTypes.object** |
| 1585 | + 5. **PropTypes.func** |
| 1586 | + 6. **PropTypes.node** |
| 1587 | + 7. **PropTypes.element** |
| 1588 | + 8. **PropTypes.bool** |
| 1589 | + 9. **PropTypes.symbol** |
| 1590 | + 10. **PropTypes.any** |
1591 | 1591 |
|
1592 |
| - `PropType`ها رو برای یه کامپوننت تستی به اسم `User` اینطوری میشه تعریف کرد : |
| 1592 | + `PropType`ها رو برای یه کامپوننت تستی به اسم `User` اینطوری میشه تعریف کرد : |
1593 | 1593 |
|
1594 | 1594 |
|
1595 |
| - <span align="left" dir="ltr"> |
| 1595 | + <span align="left" dir="ltr"> |
1596 | 1596 |
|
1597 | 1597 | ```jsx harmony
|
1598 | 1598 | import React from 'react'
|
|
1618 | 1618 | </span>
|
1619 | 1619 |
|
1620 | 1620 |
|
1621 |
| - **نکته:** در ورژن 15.5 ریاکت *propType*ها از `React.PropType` به کتابخونه `prop-types` انتقال پیدا کردن. |
| 1621 | + **نکته:** در ورژن 15.5 ریاکت *propType*ها از `React.PropType` به کتابخونه `prop-types` انتقال پیدا کردن. |
1622 | 1622 |
|
1623 | 1623 | **[⬆ برگشت به بالا](#جدول-محتوا)**
|
1624 | 1624 |
|
|
2288 | 2288 |
|
2289 | 2289 | **[⬆ برگشت به بالا](#جدول-محتوا)**
|
2290 | 2290 |
|
2291 |
| -82. ### چرت نیاز میشه به تایع setState یه فانکشن callback پاس بدیم؟ |
| 2291 | +82. ### چرا نیاز میشه به تایع setState یه فانکشن callback پاس بدیم؟ |
2292 | 2292 |
|
2293 | 2293 | دلیلش اینه که `setState()` یه عملیات async یا ناهمزمانه.
|
2294 | 2294 | state ها در ریاکت به دلایل عملکردی تغییر میکنن، بنابراین یه state ممکنه بلافاصله بعد از اینکه `setState()` صدا زده شد تغییر نکنه.
|
|
3372 | 3372 |
|
3373 | 3373 | 122. ### آیا استفاده از async/await توی ریاکت ممکنه؟
|
3374 | 3374 |
|
3375 |
| - اگه بخواییم از `async`/`await` توی ریاکن استفاده کنیم، لازمه که *Babel* و پلاگین [transform-async-to-generator](https://babeljs.io/docs/en/babel-plugin-transform-async-to-generator) رو استفاده کنیم. توی React Native اینکار با Babel و یه سری transformها انجام میشه. |
| 3375 | + اگه بخواییم از `async`/`await` توی ریاکت استفاده کنیم، لازمه که *Babel* و پلاگین [transform-async-to-generator](https://babeljs.io/docs/en/babel-plugin-transform-async-to-generator) رو استفاده کنیم. توی React Native اینکار با Babel و یه سری transformها انجام میشه. |
3376 | 3376 |
|
3377 | 3377 | **[⬆ برگشت به بالا](#جدول-محتوا)**
|
3378 | 3378 |
|
|
3640 | 3640 |
|
3641 | 3641 | 1. **استفاده از تابع مرتبه بالاتر(higher-order) `withRouter` :**
|
3642 | 3642 |
|
3643 |
| - متد `withRouter()` آبجکت history o را به عنوان یک prop به کامپوننت اضافه میکنه. در این prop دسترسی به متدهای `push()` و `replace()` بسادگی میتونه مسیریابی بین کامپوننت رو فراهم کنه و نیاز به context رو رفع کنه. |
| 3643 | + متد `withRouter()` آبجکت history را به عنوان یک prop به کامپوننت اضافه میکنه. در این prop دسترسی به متدهای `push()` و `replace()` بسادگی میتونه مسیریابی بین کامپوننت رو فراهم کنه و نیاز به context رو رفع کنه. |
3644 | 3644 |
|
3645 | 3645 | <span align="left" dir="ltr">
|
3646 | 3646 |
|
|
3740 | 3740 |
|
3741 | 3741 | 134. ### چطوری میشه query پارامترها رو توی ریاکت روتر نسخه۴ گرفت؟
|
3742 | 3742 |
|
3743 |
| -سادهترین راه برای دسترسی به paramهای آدرس استفاده از هوک useParams هست. |
| 3743 | + سادهترین راه برای دسترسی به paramهای آدرس استفاده از هوک useParams هست. |
3744 | 3744 |
|
3745 | 3745 | <span align="left" dir="ltr">
|
3746 | 3746 |
|
|
3783 | 3783 |
|
3784 | 3784 | </span>
|
3785 | 3785 |
|
| 3786 | + |
3786 | 3787 | **[⬆ برگشت به بالا](#جدول-محتوا)**
|
3787 | 3788 |
|
3788 | 3789 | 136. ### چطوری میشه به متد history.push پارامتر اضافه کرد؟
|
|
0 commit comments