You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
معمولا، پروژههای جدید ریاکت دارای یک کامپوننت `App` واحد در بالاترین سطح هستند. اما اگر شما ریاکت را با پروژهای موجود ادغام میکنید، میتوانید از سطوح پایین به بالا طراحی کنید، برای مثال از یک کامپوننت کوچک مانند `Button` شروع کنید و تدریجا تا بالای سلسله مراتب view طراحی را ادامه دهید.
استخراج کامپوننتها شاید در ابتدا به نظر کار سختی بیاید، اما داشتن یک پالت از کامپوننتهایی با قابلیت استفاده مجدد در اپهای بزرگتر، هزینه آن را باز میگرداند. به عنوان یک قانون کلی در نظر داشته باشید که اگر قسمتی از رابط کاربری شما بارها استفاده شده است (نظیر `Button`, `Panel` , `Avatar`) و یا اینکه قسمتی از رابط کاربری پیچیدگی منحصر به فرد خود را دارد (نظیر `App`, `FeedStory`, `Comment`) آن قسمت کاندیدای مناسبی برای استخراج و تبدیل شدن به یک کامپوننت مجزا است.
Copy file name to clipboardExpand all lines: content/docs/composition-vs-inheritance.md
+3-6Lines changed: 3 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,17 +1,18 @@
1
1
---
2
2
id: composition-vs-inheritance
3
-
title: Composition vs Inheritance
3
+
title: ترکیب در مقابل وراثت
4
4
permalink: docs/composition-vs-inheritance.html
5
5
redirect_from:
6
6
- "docs/multiple-components.html"
7
7
prev: lifting-state-up.html
8
8
next: thinking-in-react.html
9
9
---
10
+
10
11
ریاکت دارای یک مدل ترکیبی (compostion) قدرتمند است. به همین دلیل برای افزایش امکان استفاده مجدد کد بین کامپوننتها، ما استفاده از ترکیب را به جای ارثبری پیشنهاد میکنیم.
11
12
12
13
توسعهدهنگانی که تازه وارد دنیای ریاکت میشوند، هنگام مواجه با ارثبری دچار مشکلاتی میشوند. در این بخش، چند مورد از آنها را بررسی و نشان میدهیم که چگونه با استفاده از ترکیب میتوان آنها را حل کرد.
13
14
14
-
## در بر گرفتن {#containment}
15
+
## دربرگرفتن {#containment}
15
16
16
17
بعضی از کامپوننتها اطلاعاتی از فرزند خود ندارند. این مورد در کامپوننتهایی مانند `Sidebar` یا `Dialog` که مانند یک قاب عمل میکنند، مرسوم است.
17
18
@@ -168,8 +169,4 @@ class SignUpDialog extends React.Component {
168
169
169
170
با استفاده از prop و ترکیب کامپوننتها، در طراحی ظاهر و عملکرد کامپوننتها انعطافپذیری لازم را خواهید داشت. بهخاطر داشتهباشید که کامپوننتها میتوانند prop های دلخواهی مثل مقادیر اولیه، المنتهای ریاکت و یا توابع را دریافت کنند.
170
171
171
-
<<<<<<< HEAD
172
172
اگر نیاز دارید قابلیتی که مربوط به UI نمیشود را میان کامپوننتها به اشتراک بگذارید، پیشنهاد ما ساخت یک ماژول جاوااسکریپت است. کامپوننتهای شما میتوانند آن تابع، آبجکت و یا یک کلاس را import کرده و بدون تغییر یا توسعه آن، از قابلیتهای آن بهره ببرند.
173
-
=======
174
-
If you want to reuse non-UI functionality between components, we suggest extracting it into a separate JavaScript module. The components may import it and use that function, object, or class, without extending it.
Copy file name to clipboardExpand all lines: content/docs/faq-styling.md
-5Lines changed: 0 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -46,11 +46,6 @@ render() {
46
46
47
47
_توجه داشته باشید که این عملکرد جزئی از ری اکت نمی باشد، بلکه توسط کتابخانه های شخص ثالث ارائه شده._ ری اکت هیچ نظری درباره نحوه ی تعریف استایل ها ندارد؛ اگر شک و شبهه ای دارید، یک نقطه شروع خوب این است که استایل های خود را درون فایل جداگانه `*.css` تعریف کرده و طبق معمول با استفاده از [`className`](/docs/dom-elements.html#classname) به آن ها مراجعه کنید.
48
48
49
-
50
-
<<<<<<< HEAD
51
49
### آیا می توانم با ری اکت انیمیشن انجام دهم؟ {#can-i-do-animations-in-react}
52
50
53
51
ری اکت میتواند برای قدرت بخشیدن به انیمیشن ها استفاده شود. به مثال های [React Transition Group](https://reactcommunity.org/react-transition-group/) و [React Motion](https://github.com/chenglou/react-motion) یا [React Spring](https://github.com/react-spring/react-spring)، نگاه بیاندازید.
54
-
=======
55
-
React can be used to power animations. See [React Transition Group](https://reactcommunity.org/react-transition-group/), [React Motion](https://github.com/chenglou/react-motion), [React Spring](https://github.com/react-spring/react-spring), or [Framer Motion](https://framer.com/motion), for example.
Copy file name to clipboardExpand all lines: content/docs/handling-events.md
+1-5Lines changed: 1 addition & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -92,11 +92,7 @@ class Toggle extends React.Component {
92
92
93
93
این رفتار مختص به ریاکت نیست. این جزئی از [چگونگی کارکرد توابع در جاوااسکریپت](https://www.smashingmagazine.com/2014/01/understanding-javascript-function-prototype-bind/) است. عموما، اگر شما بدون `()` بعد از آن به یک تابع اشاره کنید، مانند `onClick={this.handleClick}`، شما باید آن متد را bind کنید.
94
94
95
-
<<<<<<< HEAD
96
-
اگر فراخوانی `bind` شما را آزار میدهد، دو راه برای دور زدن ان وجود دارد. اگر شما از [قاعده فیلدهای عمومی کلاس](https://babeljs.io/docs/plugins/transform-class-properties/) استفاده میکنید، میتوانید از فیلدهای کلاس برای bind کردن صحیح callback ها استفاده کنید.
97
-
=======
98
-
If calling `bind` annoys you, there are two ways you can get around this. You can use [public class fields syntax](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Public_class_fields#public_instance_fields) to correctly bind callbacks:
99
-
>>>>>>> 664dd5736287e01a4557cd03c9a8736682911b34
95
+
اگر فراخوانی `bind` شما را آزار میدهد، دو راه برای دور زدن ان وجود دارد. اگر شما از [قاعده فیلدهای عمومی کلاس](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Public_class_fields#public_instance_fields) استفاده میکنید، میتوانید از فیلدهای کلاس برای bind کردن صحیح callback ها استفاده کنید.
روی لینک بالا کلیک کنید تا یک ویرایشگر آنلاین باز شود. هر تغییری که میخواهید اعمال کنید و تاثیر آن را بر خروجی مشاهده کنید. بیشتر صفحات در این راهنما، مثالهای قابل ویرایشی مانند بالا دارند.
Copy file name to clipboardExpand all lines: content/docs/hooks-intro.md
+1-6Lines changed: 1 addition & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,13 +31,8 @@ function Example() {
31
31
32
32
> نکته
33
33
>
34
-
<<<<<<< HEAD
35
-
> ریاکت ۱۶.۸.۰ اولین نسخه منتشر شده است که از هوکها پشتیبانی میکند. هنگام ارتقاع، فراموش نکنید همهی پکیجها شامل React DOM را بهروز رسانی نمایید.
34
+
> ریاکت ۱۶.۸.۰ اولین نسخه منتشر شده است که از هوکها پشتیبانی میکند. هنگام ارتقاء، فراموش نکنید همهی پکیجها شامل React DOM را بهروز رسانی نمایید.
36
35
> ریاکت نیتیو از زمان [انتشار نسخه ۰.۵۹](https://reactnative.dev/blog/2019/03/12/releasing-react-native-059) از هوکها پشتیبانی میکند.
37
-
=======
38
-
>React 16.8.0 is the first release to support Hooks. When upgrading, don't forget to update all packages, including React DOM.
39
-
>React Native has supported Hooks since [the 0.59 release of React Native](https://reactnative.dev/blog/2019/03/12/releasing-react-native-059).
Copy file name to clipboardExpand all lines: content/docs/react-without-es6.md
+2-12Lines changed: 2 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -134,11 +134,7 @@ var SayHello = createReactClass({
134
134
135
135
این یعنی نوشتن کلاسهای ES6 همراه با کمی کد boilerplate برای مدیریت کنندههای رویداد است، اما مزیت آن این است که عملکرد بهتری در اپلیکیشنهای بزرک دارد.
136
136
137
-
<<<<<<< HEAD
138
-
اگر کد boilerplate برای شما جذاب نیست، میتوانید پیشنهاد نحوی **experimental** در [Class Properties](https://babeljs.io/docs/plugins/transform-class-properties/) را در Babel فعال کنید:
139
-
=======
140
-
If the boilerplate code is too unattractive to you, you may use [ES2022 Class Properties](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Public_class_fields#public_instance_fields) syntax:
141
-
>>>>>>> 664dd5736287e01a4557cd03c9a8736682911b34
137
+
اگر کد boilerplate برای شما خیلی جذاب نیست، می توانید از سینتکس [ES2022 Class Properties](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Public_class_fields#public_instance_fields) استفاده کنید:
142
138
143
139
144
140
```javascript
@@ -163,13 +159,7 @@ class SayHello extends React.Component {
163
159
}
164
160
```
165
161
166
-
<<<<<<< HEAD
167
-
لطفا در نظر داشته باشید که قاعده بالا **experimental** است و ممکن است تغییر کند، یا ممکن است این پیشنهاد وارد زبان نشود.
168
-
169
-
اگر ترجیح میدهید که در امنیت باشید، چند انتخاب دارید:
170
-
=======
171
-
You also have a few other options:
172
-
>>>>>>> 664dd5736287e01a4557cd03c9a8736682911b34
162
+
شما همچنین چند گزینه دیگر دارید:
173
163
174
164
* متدها را در سازنده bind کنید.
175
165
* از arrow function ها استفاده کنید، برای مثال `onClick={(e) => this.handleClick(e)}`.
Copy file name to clipboardExpand all lines: content/docs/reference-dom-elements.md
+1-5Lines changed: 1 addition & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -114,11 +114,7 @@ function ComponentWithTransition() {
114
114
115
115
اگر از rendering سمت سروری ریاکت استفاده میکنید، در صورتی که محتوای render شده کلاینت با محتوای render شده سرور متفاوت باشد، هشداری دریافت میکنید. البته، در برخی موارد خیلی سخت است که دقیقا با همدیگر جور بشوند. برای مثال timestamp ها بین سرور و کلاینت متفاوت خواهند بود.
116
116
117
-
<<<<<<< HEAD
118
-
اگر شما `suppressHydrationWarning` را برای المنتی `true` کنید، ریاکت برای مغایرتهای صفات و محتوای آن المنت به شما هشدار نخواهد داد. فقط تا یک سطح از عمق کار خواهد کرد، و این هم به منظور یک راه فرار است، زیاد از آن استفاده نکنید. شما میتوانید در مورد hydration در [اسناد `ReactDOM.hydrate()`](/docs/react-dom.html#hydrate) بیشتر بخوانید.
119
-
=======
120
-
If you set `suppressHydrationWarning` to `true`, React will not warn you about mismatches in the attributes and the content of that element. It only works one level deep, and is intended to be used as an escape hatch. Don't overuse it. You can read more about hydration in the [`ReactDOM.hydrateRoot()` documentation](/docs/react-dom-client.html#hydrateroot).
121
-
>>>>>>> 664dd5736287e01a4557cd03c9a8736682911b34
117
+
اگر شما `suppressHydrationWarning` را برای المنتی `true` کنید، ریاکت برای مغایرتهای صفات و محتوای آن المنت به شما هشدار نخواهد داد. فقط تا یک سطح از عمق کار خواهد کرد، و این هم به منظور یک راه فرار است، زیاد از آن استفاده نکنید. شما میتوانید در مورد hydration در [اسناد `ReactDOM.hydrateRoot()`](/docs/react-dom-client.html#hydrateroot) بیشتر بخوانید.
ریاکت 16 به مجموعه(Collection) های [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) و [Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) وابسته است. اگر در برنامه خود از مرورگرها و دستگاههای قدیمی پشتیبانی میکنید که ممکن است هنوز این موارد را به طور پیش فرض ارائه ندهند(به عنوان مثال IE <11) یا دارای پیادهسازی های غیر سازگار هستند (به عنوان مثال IE 11)، اضافه کردن یک برنامه چندکاره سراسری(global polyfill) مانند [core-js](https://github.com/zloirock/core-js) را به برنامه خود در نظر بگیرید.
9
+
ریاکت ۱۸ از تمام مرورگرهای مدرن (Edge، Firefox، Chrome، Safari و غیره) پشتیبانی می کند.
11
10
12
-
یک محیط چندکاره(polyfilled environment) برای ریاکت 16 با استفاده از core-js برای پشتیبانی از مرورگرهای قدیمی به صورت زیر است:
13
-
=======
14
-
React 18 supports all modern browsers (Edge, Firefox, Chrome, Safari, etc).
11
+
اگر از مرورگرها و دستگاههای قدیمیتری مانند اینترنت اکسپلورر که ویژگیهای مرورگر مدرن را بهصورت بومی ارائه نمیکنند یا پیادهسازیهای ناسازگاری دارند، پشتیبانی میکنید، در برنامه همراه خود یک polyfill سراسری اضافه کنید.
15
12
16
-
If you support older browsers and devices such as Internet Explorer which do not provide modern browser features natively or have non-compliant implementations, consider including a global polyfill in your bundled application.
17
-
>>>>>>> 664dd5736287e01a4557cd03c9a8736682911b34
18
-
19
-
Here is a list of the modern features React 18 uses:
13
+
در اینجا لیستی از ویژگی های مدرن مورد استفاده ریاکت ۱۸ آمده است:
ریاکت همچنین به `requestAnimationFrame` وابستگی دارد(حتی در محیط تست).
35
-
شما میتوانید از پکیج [raf](https://www.npmjs.com/package/raf) برای حل وابستگی `requestAnimationFrame` استفاده کنید :
36
-
37
-
```js
38
-
import 'raf/polyfill';
39
-
```
40
-
=======
41
-
The correct polyfill for these features depend on your environment. For many users, you can configure your [Browserlist](https://github.com/browserslist/browserslist) settings. For others, you may need to import polyfills like [`core-js`](https://github.com/zloirock/core-js) directly.
42
-
>>>>>>> 664dd5736287e01a4557cd03c9a8736682911b34
18
+
پلیفیل صحیح برای این ویژگی ها به محیط شما بستگی دارد. برای بسیاری از کاربران، میتوانید تنظیمات [Browserlist](https://github.com/browserslist/browserslist) خود را پیکربندی کنید. برای دیگران، ممکن است نیاز داشته باشید که polyfillهایی مانند [`core-js`](https://github.com/zloirock/core-js) را مستقیماً ایمپورت کنید.
0 commit comments