diff --git a/src/guide/essentials/computed.md b/src/guide/essentials/computed.md index 64786e96..2a1fad5b 100644 --- a/src/guide/essentials/computed.md +++ b/src/guide/essentials/computed.md @@ -10,7 +10,7 @@ ## مثال پایه {#basic-example} -عباراتی که در تمپلیت استفاده می شوند بسیار راحت هستند، اما آنها برای عملیات‌های ساده طراحی شده‌اند. قرار دادن منطق بیش از حد در تمپلیت‌های شما ممکن است باعث ناخوانایی و دشواری در نگهداری کدها شود. به عنوان مثال، اگر یک آبجکت با یک آرایه تو در تو داشته باشیم: +عباراتی که در تمپلیت استفاده می‌شوند بسیار راحت هستند، اما آنها برای عملیات‌های ساده طراحی شده‌اند. قرار دادن منطق بیش از حد در تمپلیت‌های شما ممکن است باعث ناخوانایی و دشواری در نگهداری کدها شود. به عنوان مثال، اگر یک آبجکت با یک آرایه تو در تو داشته باشیم:
@@ -56,7 +56,7 @@ const author = reactive({ در این نقطه، تمپلیت کمی پیچیده شده است. باید وقت بیشتری برای درک کد صرف کنیم که متوجه شویم شرط بر اساس `author.books` یک محاسبه انجام می‌دهد. مهمتر از این، اگر نیاز باشد که این محاسبه را بیش از یک بار در تمپلیت استفاده کنیم، احتمالاً نمی‌خواهیم یک کد را چندین بار بنویسیم. -به همین دلیل است که وقتی منطق پیچیده و داده‌های پویا داریم، استفاده از ویژگی **computed** توصیه می‌شود. کلمه computed به معنی محاسبه شده است. در اینجا همان مثال، بازسازی شده است: +به همین دلیل است که وقتی منطق پیچیده و داده‌های پویا داریم، استفاده از ویژگی **computed** توصیه می‌شود. کلمه computed به معنی محاسبه شده است. در اینجا همان مثال بازسازی شده است:
@@ -170,7 +170,7 @@ function calculateBooksMessage() {
-به جای یک پراپرتی computed، می توانیم همان تابع را به عنوان یک متد تعریف کنیم. نتیجه نهایی این دو رویکرد دقیقاً یکسان است. با این حال، تفاوت این است که **پراپرتی‌های computed بر اساس وابستگی‌های reactive، کش می شوند.** یک پراپرتی computed تنها زمانی دوباره ارزیابی می شود که برخی از وابستگی های reactive آن تغییر کرده باشند. این بدان معناست که تا زمانی که `author.books` تغییر نکرده باشد، دسترسی به `publishedBooksMessage` نتیجه محاسبه قبلی را برمی گرداند، بدون نیاز به اجرای مجدد تابع getter . +به جای یک پراپرتی computed، می توانیم همان تابع را به عنوان یک متد تعریف کنیم. نتیجه نهایی این دو رویکرد دقیقاً یکسان است. با این حال، تفاوت این است که **پراپرتی‌های computed بر اساس وابستگی‌های reactive، کش می‌شوند.** یک پراپرتی computed تنها زمانی دوباره ارزیابی می‌شود که برخی از وابستگی‌های reactive آن تغییر کرده باشند. این بدان معناست که تا زمانی که `author.books` تغییر نکرده باشد، دسترسی به `publishedBooksMessage` نتیجه محاسبه قبلی را برمی‌گرداند، بدون نیاز به اجرای مجدد تابع getter . این به این معنی هم هست که پراپرتی computed زیر هیچ وقت به‌روز نمی‌شود، زیرا `Date.now()‎` یک reactive نمی‌باشد. @@ -313,7 +313,7 @@ const alwaysSmall = computed((previous) => { ```
-In case you're using a writable computed: +در صورتی که از computed قابل تغییر استفاده می کنید:
@@ -371,7 +371,7 @@ const alwaysSmall = computed({ ### توابع getter باید فقط مقدار مورد نظر را برگردانند و تغییر دیگری در برنامه ایجاد نکنند.{#getters-should-be-side-effect-free} -مهم است به یاد داشته باشید که توابع getter در computed فقط باید محاسبات خالص را انجام دهند. به عبارت دیگر، **درون تابع getter، دیگر stateها را تغییر ندهید، از درخواست‌های async یا تغییر DOM استفاده نکنید!** به computed به عنوان یک راه ساده برای محاسبه یک مقدار بر اساس مقادیر دیگر نگاه کنید - مسئولیت اصلی آن تنها محاسبه و بازگرداندن آن مقدار می‌باشد. در ادامه این بخش، به بحث در مورد انجام عملیات هایی در پاسخ به تغییرات state با [ناظرها (watchers)](./watchers) خواهیم پرداخت. +مهم است به یاد داشته باشید که توابع getter در computed فقط باید محاسبات خالص را انجام دهند. به عبارت دیگر، **درون تابع getter، دیگر stateها را تغییر ندهید، از درخواست‌های async یا تغییر DOM استفاده نکنید!** به computed به عنوان یک راه ساده برای محاسبه یک مقدار بر اساس مقادیر دیگر نگاه کنید - مسئولیت اصلی آن تنها محاسبه و بازگرداندن آن مقدار می‌باشد. در ادامه این فصل، به بحث در مورد انجام عملیات‌هایی در پاسخ به تغییرات state با [ناظرها (watchers)](./watchers) خواهیم پرداخت. ### مقادیر computed را تغییر ندهید {#avoid-mutating-computed-value}