Спостереження та WatchEffect

pic

Фото від Ana на Unsplash

Передумови

  • Переконайтесь, що ви встановили Node.js версії 18.3+
  • Вам потрібно створити додаток Vue, дотримуючись цього посібника.

Вступ

Хочете спостерігати за реактивним станом і виконувати деякий код? У Vue є функція для цього, яка називається "спостерігачі" (watchers). Вони виконуються, коли змінюється реактивний стан.

Watch

Watch можна використовувати для спостереження за окремим реактивним станом. Це рекомендований спосіб спостереження за реактивним станом, оскільки він явно вказує, за яким станом ви хочете спостерігати.

В шаблоні

Напишемо простий лічильник, як показано нижче:

pic

У скрипті

pic

На рядку 11 ми використовуємо watch для спостереження за станом count. Потрібно вказати, за яким станом спостерігати, і надати функцію зворотного виклику (callback).

Запуск проєкту

Коли ви натискаєте кнопку "Increment", спостерігач автоматично запуститься і виведе повідомлення в консоль.

Миттєвий запуск

Спостерігач запускається, коли змінюється стан. Однак, якщо потрібно виконати спостерігач одразу після монтування компонента, ви можете використати immediate: true, як показано нижче:

watch(  
 count,  
 () => {  
 console.log('count changed')  
 },  
 { immediate: true },  
)

WatchEffect

Подібно до Watch, але WatchEffect можна використовувати для спостереження за кількома реактивними станами. Однак використовуйте його з обережністю, оскільки може бути складно визначити, які стани змінилися і чому був викликаний WatchEffect.

В шаблоні

Напишемо кілька полів введення та кнопку відправки, як показано нижче.

pic

У скрипті

pic

На рядку 15 ви можете побачити, як ми використовуємо watchEffect. watchEffect спрацьовує, якщо змінюється будь-який зі станів name, email або block.

Запуск проєкту

Напишіть "John" і "[email protected]" у поля вводу, і ви побачите текст "You are blocked".

Готово

Використовуйте спостерігачі (watchers), якщо хочете відстежувати стан і виконувати деякий код.

Попередній розділ: Template Refs

Наступний розділ:

Перекладено з: Watch and WatchEffect

Leave a Reply

Your email address will not be published. Required fields are marked *