данные прямо в шаблоне?
Например
<div v-if="getData()">
{{getData()}}
что б функция 2 раза не дергалась ?
Интересует именно в шаблоне - в компоненте и в функции понятно как
Можно узнать, зачем?
если вью 3.2+, то через v-memo https://v3.vuejs.org/api/directives.html#v-memo если нет, то либо объявляй у нее явные зависимости и выноси в computed, либо пиши свое кэширование
Спасибо. Vue второй. computed параметры не дадут. Придется писать. :(
ну параметры-то откуда-то берутся, если они заранее известны, то ты все еще можешь посчитать все заранее в computed
Параметры берутся из v-for. getData не асинхронная. Ну да можно сбоку к основному списку еще список результатов держать. Ну вобщем вариантов как разрулить много .... тока лень :)
ну так создай computed, где проходишься по циклу и высчитываешь getData() что там лень, 3 строчки написать?
Ну это уже философский вопрос :) Был бы способ - я б сделал и не думал. А тут теперь думаю - не преждевременная ли это оптимизация :)
Именно в такой формулировке вопроса, проблему можно решить на уровне мемоизации самой функции без участия Vue. (но лучше так всё равно не делать)
С вызовом методов в шаблоне надо всегда аккуратно. Нужно, чтобы у метода не было побочных эффектов, метод не был асинхронный, не был медленным. Возможно, если покажешь пример задачи, которую так пытаешься решить, тут предложат варианты подходящие)
Спасибо. Тут вроде все понятно. Просто думал немного жизнь упростить. Судя по тому что в vue3 сделали v-memo - мне не одному это в голову прихолдило :)
v-memo про рендеринг. В твоём примере всё также метод будет вызываться дважды.
Почитал - да, не то что я думал - не мой случай. Да и 3го vue нет
Обсуждают сегодня