Skip to content

computed.md translation #5

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Aug 18, 2020
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
replace "fields" with "properties" translations
  • Loading branch information
ValeriiMal committed Aug 18, 2020
commit 86fd6f348542bedc12e381f9179310484c7e64a8
34 changes: 17 additions & 17 deletions src/v2/guide/computed.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
---
title: Обчислені поля та спостерігачі
title: обчислювані властивості та спостерігачі
type: guide
order: 5
---

## Обчислені поля
## Обчислювані властивості

<div class="vueschool"><a href="https://vueschool.io/lessons/vuejs-computed-properties?friend=vuejs" target="_blank" rel="sponsored noopener" title="Вивчи, як обчислені поля працюють з Vue School">Вивчіть, як обчислені поля працюють на безкоштовних уроках Vue School</a></div>
<div class="vueschool"><a href="https://vueschool.io/lessons/vuejs-computed-properties?friend=vuejs" target="_blank" rel="sponsored noopener" title="Вивчи, як обчислювані властивості працюють з Vue School">Вивчіть, як обчислювані властивості працюють на безкоштовних уроках Vue School</a></div>

Шаблонні вирази дуже зручні, але вони призначені для простих операцій. Додавання великої кількості логіки до шаблонів може зробити їх переповненими і складними для підтримки. Наприклад:

Expand All @@ -18,7 +18,7 @@ order: 5

Тепер шаблон більше не простий і декларативний. Вам необхідно дивитися на нього протягом секунди щоб зрозуміти, що він показує `message` в зворотньому напрямку. Проблема укладнюється якщо ви хочете включити перевернуте повідомлення в шаблон більше одного разу.

Ось чому для будь якої комплексної логіки вам потрібно використовувати **обчислені поля**
Ось чому для будь якої комплексної логіки вам потрібно використовувати **обчислювані властивості**

### Простий приклад

Expand All @@ -36,7 +36,7 @@ var vm = new Vue({
message: 'Hello'
},
computed: {
// обчислений поле
// обчислювана властивість
reversedMessage: function () {
// `this` вказує на екземпляр vm
return this.message.split('').reverse().join('')
Expand Down Expand Up @@ -67,7 +67,7 @@ var vm = new Vue({
</script>
{% endraw %}

Тут ми вказали обчислене поле `reversedMessage`. Функція, яку ми подали буде використовуватися як функція-читач для поля `vm.reversedMessage`:
Тут ми вказали обчислювану властивість `reversedMessage`. Функція, яку ми подали буде використовуватися як функція-читач для властивості `vm.reversedMessage`:

``` js
console.log(vm.reversedMessage) // => 'olleH'
Expand All @@ -77,7 +77,7 @@ console.log(vm.reversedMessage) // => 'eybdooG'

Ви можете відкрити консоль і гратися з vm з прикладу самостійно. Значення `vm.reversedMessage` завжди залежить від значення `vm.message`.

Ви можете прив'язатися до обчислених полів в шаблонах так само як до звичайного поля. Vue відомо, що `vm.reversedMessage` залежить від `vm.message`, тому буде оновлено кожна прив'язка, яка залежить від `vm.reversedMessage`, коли `vm.message` змінюється. І найкраще це те, що ми створили це відношення залежності декларативно: обчислена функція читач не має побічних впливів, що робить її тестування і розуміння простішими.
Ви можете прив'язатися до обчислюваних властивостей в шаблонах так само, як до звичайної властивості. Vue відомо, що `vm.reversedMessage` залежить від `vm.message`, тому буде оновлено кожна прив'язка, яка залежить від `vm.reversedMessage`, коли `vm.message` змінюється. І найкраще це те, що ми створили це відношення залежності декларативно: обчислювана функція-читач не має побічних впливів, що робить її тестування і розуміння простішими.

### Обчислене Кешування проти Методів

Expand All @@ -96,9 +96,9 @@ methods: {
}
```

Замість обчсленого поля, ми можемо задати таку ж саму функцію в якості методу. Для кінцевого результату два підходи дійсно однакові. Однак, різниця в тому, що **обчислені поля кешовані основуючись на їх реактивних залежностях**. Обчислене поле буде перераховане тільки в тому випадку, якщо хоча б одна з його рективних залежностей змінилася. Тобто поки поле `message` не змінилося, багаторазовий доступ до обчисленого поля `reversedMessage` буде одразу повертати попередньо обчислений результат без необхідності знову викликати функцію.
Замість обчслюваної властивості, ми можемо задати таку ж саму функцію в якості методу. Для кінцевого результату два підходи дійсно однакові. Однак, різниця в тому, що **обчислювані властивості кешовані, основуючись на їх реактивних залежностях**. Обчислювана властивість буде перерахована тільки в тому випадку, якщо хоча б одна з його рективних залежностей змінилася. Тобто поки властивість `message` не змінилася, багаторазовий доступ до обчислюваної властивості `reversedMessage` буде одразу повертати попередньо обчислений результат без необхідності знову викликати функцію.

Це також означає, що наступне обчислене поле ніколи не буде оновлюватися, тому, що `Date.now()` не реактивна залежність:
Це також означає, що наступна обчислювана властивість ніколи не буде оновлюватися, тому, що `Date.now()` не реактивна залежність:

``` js
computed: {
Expand All @@ -110,11 +110,11 @@ computed: {

Для порівняння, виклик методу **завжди** запускатиме функцію під час повторного відображення.

Навіщо нам потрібне кешування? Уявіть, що у нас є складне обчислене поле **A**, яке вимагає обробки в циклі величезного масиву та проведення багатьох обчислень. Тоді можемо мати інші обчислені поля, які в свою чергу залежать від **A**. Без кешування ми б запускали отримувач **A** набагато більше разів, ніж потрібно! У випадках, коли вам не потрібне кешування, скористайтеся методом.
Навіщо нам потрібне кешування? Уявіть, що у нас є складне обчислене поле **A**, яке вимагає обробки в циклі величезного масиву та проведення багатьох обчислень. Тоді можемо мати інші обчислювані властивості, які в свою чергу залежать від **A**. Без кешування ми б запускали отримувач **A** набагато більше разів, ніж потрібно! У випадках, коли вам не потрібне кешування, скористайтеся методом.

### Обчислене проти Спостереженого поля
### Обчислювана проти Спостережуваної властивості

Vue надає більш загальний спосіб оглядати і реагувати на зміни даних в екземплярі Vue: **спостережені поля**. Якщо у вас є деякі дані, які повинні змінюватись основуючись на інших даних, це провокує перевикористання `watch` - особливо якщо ви прийшли з підгрунтям AngularJS. Однак, часто кращою ідеєю є використання обчислених полів аніж імперативна функція виклику `watch`. Розглянемо цей приклад:
Vue надає більш загальний спосіб оглядати і реагувати на зміни даних в екземплярі Vue: **спостережувана властивість**. Якщо у вас є деякі дані, які повинні змінюватись основуючись на інших даних, це провокує перевикористання `watch` - особливо якщо ви прийшли з підгрунтям AngularJS. Однак, часто кращою ідеєю є використання обчислюваних властивостей аніж імперативна функція виклику `watch`. Розглянемо цей приклад:

``` html
<div id="demo">{{ fullName }}</div>
Expand All @@ -139,7 +139,7 @@ var vm = new Vue({
})
```

Вищевказаний код є імперативним та повторюваним. Порівняйте його з версією обчисленого поля:
Вищевказаний код є імперативним та повторюваним. Порівняйте його з версією обчислюваної властивості:

``` js
var vm = new Vue({
Expand All @@ -158,9 +158,9 @@ var vm = new Vue({

Набагато краще, чи не так?

### Обчислений задавач
### Обчислюваний задавач

Обчислені поля за замовчуванням використовуються лише для отримання, але ви також можете надати задавач, коли вам це потрібно:
Обчислювані властивості за замовчуванням використовуються лише для отримання, але ви також можете надати задавач, коли вам це потрібно:

``` js
// ...
Expand All @@ -184,7 +184,7 @@ computed: {

## Спостерігачі

Хоча обчислені поля є більш доцільними у більшості випадків, є випадки, коли спеціальний спостерігач необхідний. Ось чому Vue пропонує більш загальний спосіб реагування на зміни даних за допомогою опції `watch`. Це найбільш корисно, коли ви хочете виконувати асинхронні чи складні операції у відповідь на зміну даних.
Хоча обчислювані властивості є більш доцільними у більшості випадків, є випадки, коли спеціальний спостерігач необхідний. Ось чому Vue пропонує більш загальний спосіб реагування на зміни даних за допомогою опції `watch`. Це найбільш корисно, коли ви хочете виконувати асинхронні чи складні операції у відповідь на зміну даних.

Наприклад:

Expand Down Expand Up @@ -299,7 +299,7 @@ var watchExampleVM = new Vue({
</script>
{% endraw %}

У цьому випадку використання `watch` дозволяє нам виконувати асинхронну операцію (доступ до API), обмежувати частоту виконання цієї операції та встановлювати проміжні стани, поки ми не отримаємо остаточну відповідь. Нічого з цього не було б можливим із обчисленим полем.
У цьому випадку використання `watch` дозволяє нам виконувати асинхронну операцію (доступ до API), обмежувати частоту виконання цієї операції та встановлювати проміжні стани, поки ми не отримаємо остаточну відповідь. Нічого з цього не було б можливим із обчислюваною властивістю.

Окрім `watch`, ви також можете використовувати імперативний [vm.$watch API](../api/#vm-watch).