diff --git a/src/guide/essentials/watchers.md b/src/guide/essentials/watchers.md index 9049a102..bbfe2f09 100644 --- a/src/guide/essentials/watchers.md +++ b/src/guide/essentials/watchers.md @@ -1,23 +1,25 @@ -# Watchers {#watchers} +# ناظرها {#watchers} -## Basic Example {#basic-example} +## مثال پایه {#basic-example} -Computed properties allow us to declaratively compute derived values. However, there are cases where we need to perform "side effects" in reaction to state changes - for example, mutating the DOM, or changing another piece of state based on the result of an async operation. +ویژگی‌های (computed) به شما این امکان را می‌دهند که مقادیر جدید را براساس داده‌های موجود محاسبه کنید. +با این حال در یک سری از موارد ما باید در واکنش به تغییرات ،برای مثال تغییر در DOM یا تغییر بخشی از state که نتیجه یک عملیات همگام است، + عملیات‌هایی را انجام دهیم .
-With the Options API, we can use the [`watch` option](/api/options-state#watch) to trigger a function whenever a reactive property changes: +با استفاده از Options API، ما می‌توانیم از [`watch`](/api/options-state#watch) استفاده کنیم تا هروقت پراپرتی داینامیک تغییر کرد،یک تابع را فراخوانی کنیم: ```js export default { data() { return { question: '', - answer: 'Questions usually contain a question mark. ;-)' + answer: 'سوالی که مینویسید باید شامل علامت سوال(?) باشد.' } }, watch: { - // whenever question changes, this function will run + // هر زمان که سوال تغییر کند، این تابع اجرا خواهد شد question(newQuestion, oldQuestion) { if (newQuestion.includes('?')) { this.getAnswer() @@ -26,12 +28,12 @@ export default { }, methods: { async getAnswer() { - this.answer = 'Thinking...' + this.answer = 'درحال فکر کردن...' try { const res = await fetch('https://yesno.wtf/api') this.answer = (await res.json()).answer } catch (error) { - this.answer = 'Error! Could not reach the API. ' + error + this.answer = 'خطا! دسترسی به لینک ممکن نیست. ' + error } } } @@ -40,20 +42,20 @@ export default { ```vue-html

- Ask a yes/no question: + یک سوال بله/خیر بپرسید:

{{ answer }}

``` -[Try it in the Playground](https://play.vuejs.org/#eNptUk2PmzAQ/SuvXAA1sdVrmt0qqnroqa3UIxcLhuCGjKk/wkYR/70OBJLuroRkPDPvzbznuSS7rhOnQMkm2brS6s4/F0wvnbEeFdUqtB6XgoFKeZXl0z9gyQfL8w34G8h5bXiDNF3NQcWuJxtDv25Zh+CCatszSsNeaYZakDgqexD4vM7TCT9cj2Ek65Uvm83cTUr0DTGdyN7RZaN4T24F32iHOnA5hnvdtrCBJ+RcnTH180wrmLaaL4s+QNd4LBOaK3r5UWfplzTHM9afHmoxdhV78rtRcpbPmVHEf1qO5BtTuUWNcmcu8QC9046kk4l4Qvq70XzQvBdC3CyKJfb8OEa01fn4OC7Wq15pj5qidVnaeN+5jZRncmxE72upOp0uY77ulU3gSCT+uOhXnt9yiy6U1zdBRtYa+9aK+9TfrgUf8NWEtgKbK6mKQN8Qdj+/C6T4iJHkXcsKjt9WLpsZL56OXas8xRuw7cYD2LlDXKYoT7K5b+OU22rugsdpfTQVtU9FMueLBHKikRNPpLtcbnuLYZjCW7m0TIZ/92UFiQ==) +[امتحان کنید](https://play.vuejs.org/#eNptUk2PmzAQ/SuvXAA1sdVrmt0qqnroqa3UIxcLhuCGjKk/wkYR/70OBJLuroRkPDPvzbznuSS7rhOnQMkm2brS6s4/F0wvnbEeFdUqtB6XgoFKeZXl0z9gyQfL8w34G8h5bXiDNF3NQcWuJxtDv25Zh+CCatszSsNeaYZakDgqexD4vM7TCT9cj2Ek65Uvm83cTUr0DTGdyN7RZaN4T24F32iHOnA5hnvdtrCBJ+RcnTH180wrmLaaL4s+QNd4LBOaK3r5UWfplzTHM9afHmoxdhV78rtRcpbPmVHEf1qO5BtTuUWNcmcu8QC9046kk4l4Qvq70XzQvBdC3CyKJfb8OEa01fn4OC7Wq15pj5qidVnaeN+5jZRncmxE72upOp0uY77ulU3gSCT+uOhXnt9yiy6U1zdBRtYa+9aK+9TfrgUf8NWEtgKbK6mKQN8Qdj+/C6T4iJHkXcsKjt9WLpsZL56OXas8xRuw7cYD2LlDXKYoT7K5b+OU22rugsdpfTQVtU9FMueLBHKikRNPpLtcbnuLYZjCW7m0TIZ/92UFiQ==) -The `watch` option also supports a dot-delimited path as the key: +گزینه `watch` از پراپرتی های تو در تو یک آبجکت هم پشتیبانی می کند. ```js export default { watch: { - // Note: only simple paths. Expressions are not supported. + // توجه: عبارات پشتیبانی نمی شوند و فقط میتوان از پراپرتی های شی استفاده کرد 'some.nested.key'(newValue) { // ... } @@ -65,24 +67,23 @@ export default {
-With Composition API, we can use the [`watch` function](/api/reactivity-core#watch) to trigger a callback whenever a piece of reactive state changes: +با استفاده از Composition API، می‌توانیم از [تابع `watch` ](/api/reactivity-core#watch) استفاده کنیم تا هر زمان یک قسمت از reactive state تغییر کرد، یک تابع (callback) را فراخوانی کنیم: ```vue ``` -To manually stop a watcher, use the returned handle function. This works for both `watch` and `watchEffect`: +برای متوقف کردن یک ناظر به صورت دستی باید از تابع `unwatch()` استفاده کنید. این کار برای هر دو `watch` و `watchEffect` کار می‌کند. ```js const unwatch = watchEffect(() => {}) -// ...later, when no longer needed +// ... بعداً، زمانی که دیگر مورد نیاز نیست unwatch() ``` -Note that there should be very few cases where you need to create watchers asynchronously, and synchronous creation should be preferred whenever possible. If you need to wait for some async data, you can make your watch logic conditional instead: +توجه داشته باشید که موارد کمی وجود دارند که نیاز به ایجاد نظارت ناهمگام دارید، و بهتر است اگر امکان دارد از نظارت همزمان استفاده کنید. اگر باید منتظر برخی از داده‌های ناهمگام باشید، به جای آن می‌توانید منطق ناظر خود را برعکس کنید: ```js -// data to be loaded asynchronously +// داده هایی که به صورت ناهمزمان بارگذاری می شوند const data = ref(null) watchEffect(() => { if (data.value) { - // do something when data is loaded + // هنگامی که داده ها لود می شوند کاری انجام دهید } }) ```