Skip to main content

Чим computed відрізняється від звичайного методу?

computed і звичайний метод у Vue виглядають схожими - обидва можуть щось «обчислювати». Але працюють вони принципово по-різному.

Ось головне:

computed кешується і перераховується тільки при зміні залежностей. method виконується заново щоразу при рендері.

Розберемо це максимально зрозуміло.


1. Основна відмінність

computed - значення, що кешується

Якщо залежні дані не змінювалися → Vue НЕ запускає функцію знову.

method - завжди перераховується

Метод викликається щоразу, коли компонент рендериться.


Приклад, що показує різницю

javascript
<script setup> import { ref, computed } from 'vue' const count = ref(1) const computedDouble = computed(() => { console.log("computed called") return count.value * 2 }) function methodDouble() { console.log("method called") return count.value * 2 } </script> <template> <p>{{ computedDouble }}</p> <p>{{ methodDouble() }}</p> </template>

Поведінка:

computed:

  • Виведе "computed called" один раз,
  • поки count не зміниться - більше не викличеться.

method:

  • Виведе "method called" щоразу при рендері,
  • іноді багато разів поспіль.

2. Поведінка при рендері

Що робитьcomputedmethod
Кешує результатТакНі
Виконується при кожному рендеріНіТак
Перераховується тільки при зміні залежностейТакНі
Використовується як зміннаТакНі (як функція)

3. Коли використовувати computed?

Використовуй computed, коли:

значення залежить від інших реактивних даних потрібен derived state (похідне значення) важлива продуктивність значення використовується в шаблоні

Приклади:

  • фільтрація масиву
  • форматування дати
  • підрахунок кількості товарів
  • перетворення рядка в UPPERCASE
  • складна логіка, що виводиться в шаблон

4. Коли використовувати method?

Метод потрібен, коли: потрібно виконати дію обчислення НЕ повинно кешуватися потрібні сайд-ефекти це не derived state

Приклади:

  • відправлення запиту
  • логування
  • зміна стану
  • обробка кліків

Підсумок (коротко)

computed:

  • як змінна
  • кешується
  • перераховується тільки при зміні залежностей
  • оптимізовано для продуктивності

method:

  • як функція
  • викликається при кожному рендері
  • не кешується
  • підходить для дій, а не обчислень

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.