Skip to content

Commit

Permalink
Update options-composition.md
Browse files Browse the repository at this point in the history
  • Loading branch information
mohammadshg84 authored Jun 24, 2024
1 parent e9d350b commit dbe5180
Showing 1 changed file with 23 additions and 23 deletions.
46 changes: 23 additions & 23 deletions src/api/options-composition.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
(value)
را برای
inject
کردن در کامپوننتهای فرزند فراهم میکند.
کردن در کامپوننت‌های فرزند فراهم می‌کند.

- **تایپ (Type)**

Expand All @@ -19,9 +19,9 @@

- **جزئیات**

توابع `provide` و ‍[`inject`](#inject) در کنار هم استفاده میشوند تا به کامپوننت های والد اجازه دهند به عنوان dependency injector نسبت به کامپوننتهای فرزند عمل کنند، بدون در نظر گرفتن اینکه سلسله مراتب کامپوننتها چقدر عمیق هستند تا زمانی که همگی داخل یک زنجیر والد (parent chain) باشند.
توابع `provide` و ‍[`inject`](#inject) در کنار هم استفاده می‌شوند تا به کامپوننتهای والد اجازه دهند به عنوان dependency injector نسبت به کامپوننت‌های فرزند عمل کنند، بدون در نظر گرفتن اینکه سلسله مراتب کامپوننت‌ها چقدر عمیق هستند تا زمانی که همگی داخل یک زنجیر والد (parent chain) باشند.

آپشن `provide` باید object یا یک تابع که یک object بازگردانی میکند باشد. این object شامل پراپرتیهایی است که برای inject در فرزندان در دسترس هستند. شما میتوانید از Symbol ها به عنوان کلید (key) در این object استفاده کنید.
آپشن `provide` باید object یا یک تابع که یک object بازگردانی می‌کند باشد. این object شامل پراپرتی‌هایی است که برای inject در فرزندان در دسترس هستند. شما می‌توانید از Symbol ها به عنوان کلید (key) در این object استفاده کنید.



Expand Down Expand Up @@ -62,7 +62,7 @@

## تابع ()inject {#inject}

پراپرتی هایی برای inject کردن در کامپوننت حاضر با مکانیابی آنها از ancestor provider ها تعریف میکند.
پراپرتیهایی برای inject کردن در کامپوننت حاضر با مکان‌یابی آن‌ها از ancestor providerها تعریف می‌کند.

- **تایپ (Type)**

Expand All @@ -83,16 +83,16 @@
- **جزئیات**
آپشن `inject` باید یکی از حالتهای زیر باشد :
آپشن `inject` باید یکی از حالت‌های زیر باشد:
- آرایه ای از string ها
- آرایهای از stringها
- یا یک آبجکت که کلیدهای آن local binding name هستند و مقادیر آن یکی از موارد زیر است:
- یک کلید (string یا Symbol) برای جستجو در injection های قابل دسترس
- یک کلید (string یا Symbol) برای جستجو در injectionهای قابل دسترس
- یا یک object که در آن:
- پراپرتی ‍`from` کلیدی است (string یا Symbol) برای جستجو در injection های در دسترس
- پراپرتی `default` به عنوان یک fallback value استفاده میشود. همانند مقدار پیشفرض برای props یک تابع factory برای object types ها نیاز است تا از اشتراک value بین چندین component instance جلوگیری کند
- پراپرتی ‍`from` کلیدی است (string یا Symbol) برای جستجو در injectionهای در دسترس
- پراپرتی `default` به عنوان یک fallback value استفاده می‌شود. همانند مقدار پیش‌فرض برای props یک تابع factory برای object typesها نیاز است تا از اشتراک value بین چندین component instance جلوگیری کند
اگر هیچ پراپرتی match شده و یا مقدار پیشفرضی provide نشده باشد injected property برابر با undefined خواهد بود.
اگر هیچ پراپرتی match شده و یا مقدار پیشفرضی provide نشده باشد، injected property برابر با undefined خواهد بود.
- **مثالها**
Expand Down Expand Up @@ -158,7 +158,7 @@ Injection ها می توانند با مقدار پیش فرض اختیاری ب
}
```

همانند prop defaults, شما باید از یک تابع factory برای مقادیر non-primitive استفاده کنید
همانند prop defaults، شما باید از یک تابع factory برای مقادیر non-primitive استفاده کنید


```js
Expand All @@ -174,9 +174,9 @@ Injection ها می توانند با مقدار پیش فرض اختیاری ب

- **همچنین ببینید** [Provide / Inject](/guide/components/provide-inject)

## میکسینها (mixins) {#mixins}
## میکسین‌ها (mixins) {#mixins}

یک آرایه از option object ها برای ترکیب شدن در کامپوننت حاضر.
یک آرایه از option objectها برای ترکیب شدن در کامپوننت حاضر.

- **تایپ (Type)**

Expand All @@ -188,12 +188,12 @@ Injection ها می توانند با مقدار پیش فرض اختیاری ب

- **جزئیات**

آپشن mixins یک آرایه از mixin object ها را می‌پذیرد. این mixin object ها می‌توانند شامل instance option ها مانند instance object های عادی باشند و در نهایت با option های نهایی با استفاده از منطق مشخص ادغام option ها ادغام خواهند شد. به عنوان مثال، اگر mixin شما یک هوک created داشته باشد و خود کامپوننت هم یک هوک مشابه داشته باشد، هر دو تابع فراخوانی خواهند شد.
آپشن mixins یک آرایه از mixin objectها را می‌پذیرد. این mixin objectها می‌توانند شامل instance optionها مانند instance objectهای عادی باشند و در نهایت با optionهای نهایی با استفاده از منطق مشخص ادغام optionها ادغام خواهند شد. به عنوان مثال، اگر mixin شما یک هوک created داشته باشد و خود کامپوننت هم یک هوک مشابه داشته باشد، هر دو تابع فراخوانی خواهند شد.

هوک‌های mixin به ترتیبی که provide شده‌اند و قبل از هوک‌های خود کامپوننت فراخوانی می‌شوند.

:::warning دیگر پیشنهاد نمیشود
در 2 Vue میکسین ها (mixins) مکانیزم اصلی برای ساخت تکه های قابل استفاده مجدد از کامپوننت ها بودند. درحالی که mixin ها در Vue 3 پشتیبانی میشوند با این حال [ توابع Composable با استفاده از Composition API](/guide/reusability/composables) حالا راه حل مقدمتر و ترجیح داده شده برای استفاده مجدد از کدها بین کامپوننتهاست.
:::warning دیگر پیشنهاد نمی‌شود
در 2 Vue میکسین ها (mixins) مکانیزم اصلی برای ساخت تکههای قابل استفاده مجدد از کامپوننتها بودند. درحالی که mixinها در Vue 3 پشتیبانی میشوند با این حال [ توابع Composable با استفاده از Composition API](/guide/reusability/composables) حالا راه حل مقدم‌تر و ترجیح داده شده برای استفاده مجدد از کدها بین کامپوننت‌هاست.
:::

- **مثالها**
Expand Down Expand Up @@ -230,13 +230,13 @@ Injection ها می توانند با مقدار پیش فرض اختیاری ب

- **جزئیات**

به یک کامپوننت اجازه می دهد تا دیگری را extend کند و option های کامپوننت را به ارث ببرد.
به یک کامپوننت اجازه میدهد تا دیگری را extend کند و optionهای کامپوننت را به ارث ببرد.

از دیدگاه پیاده‌سازی، extends تقریباً همانند mixins است. کامپوننت مشخص‌شده توسط extends به عنوان اینکه یک mixin اولیه باشد، پردازش خواهد شد.

با این حال `extends` و `mixins` اهداف مختلفی را بیان میکنند. آپشن `mixins` در اصل برای ساخت تکه های (chunks) یک functionality استفاده میشود در حالی که `extends` به طور اساسی برای بحث وراثت (inheritance) مورد استفاده قرار میگیرد.
با این حال `extends` و `mixins` اهداف مختلفی را بیان می‌کنند. آپشن `mixins` در اصل برای ساخت تکههای (chunks) یک functionality استفاده می‌شود در حالی که `extends` به طور اساسی برای بحث وراثت (inheritance) مورد استفاده قرار می‌گیرد.

همانند `mixins` هر option (بجز ()setup) توسط استراتژیهای مرج رایج مرج خواهد شد.
همانند `mixins` هر option (بجز ()setup) توسط استراتژی‌های مرج رایج مرج خواهد شد.

- **مثال**

Expand All @@ -249,12 +249,12 @@ Injection ها می توانند با مقدار پیش فرض اختیاری ب
}
```

:::warning برای Composition API توصیه نمی شود
`extends` برای `Options API` طراحی شده است و merging متعلق به هوک `()setup` را handle نمی کند.
:::warning برای Composition API توصیه نمیشود
`extends` برای `Options API` طراحی شده است و merging متعلق به هوک `()setup` را handle نمیکند.

در Composition API مدل ذهنی که نسبت به وراثت برای logic reuse ترجیح داده میشود "compose" است. اگر شما منطقی در یک کامپوننت دارید که نیاز به استفاده مجدد از آن در کامپوننت دیگر است منطق مد نظر را به یک Composable انتقال دهید.
در Composition API مدل ذهنی که نسبت به وراثت برای logic reuse ترجیح داده می‌شود "compose" است. اگر شما منطقی در یک کامپوننت دارید که نیاز به استفاده مجدد از آن در کامپوننت دیگر است منطق مد نظر را به یک Composable انتقال دهید.

اگر همجنان قصد دارید توسط Composition API یک کامپوننت را extend کنید میتوانید `()setup` متعلق به کامپوننت base را داخل ‍`()setup` متعلق به کامپوننتی که میخواهید extend کنید فراخوانی کنید:
اگر همجنان قصد دارید توسط Composition API یک کامپوننت را extend کنید می‌توانید `()setup` متعلق به کامپوننت base را داخل ‍`()setup` متعلق به کامپوننتی که می‌خواهید extend کنید فراخوانی کنید:

```js
import Base from './Base.js'
Expand Down

0 comments on commit dbe5180

Please sign in to comment.