@camradee

Почему во vue computed свойство вызывается несколько раз?

Во vue новичок и не особо понимаю глубинные процессы которые в нем происходят и вот столкнулся с проблемой - надо отправить кое какую статистику, для этого можно прикрутить watch на геттер или прописать отправку этой статистики в computed property. В моем случае самое подходящее свойство products выдает список продуктов на странице, вызывается оно только один раз в компоненте через цикл v-for="product in products" но если что-то выводить в консоль, то это что-то выведется много раз. Соот-но и моя статистика пошлется много раз. Если что этот компонент обернут lazy-hydration. Но думаю это не связано. Могу предположить первый вызов видит кэшированную версию, затем вызывает еще раз получая свежую, но в консоли вызовы до 4 раз. Что происходит, это нормально?
  • Вопрос задан
  • 525 просмотров
Решения вопроса 2
Aetae
@Aetae Куратор тега Vue.js
Тлен
Какая нафиг отправка статистики в computed? computed не должен иметь сайдэффектов, только отдавать значение.

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

Если же просто описать как работает computed: при первом обращении к нему производится первое вычисление, а также, условно, вешается watch на все реактивные свойства, к которым внутри него было обращение. Соответственно перевычисление computed происходит исключительно если одно из этих свойств поменялось.

P.S. При SSR computed на стороне сервера вообще не кэшируется вроде, т.е. перевычисляется при каждом обращении. Инфа не 100%.)
Ответ написан
Wispik
@Wispik
Как же сложно показать пример кода где и что не работает. Лучше написать кучу предложений, из которых фиг что можно понять((
Но, если я все-таки понял вопрос, то надо сделать:
1. Создать computed свойство, которое считает что нужно
2. Сделать watch за этим свойством и в нем выполнять отправку статистики
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы