Как вернуть данные внутри вычисляемого свойства в запросе axios

#javascript #vue.js #vuejs2 #vue-component

#javascript #vue.js #vuejs2 #vue-компонент

Вопрос:

у меня есть вычисляемое свойство, и внутри него есть вызов axios. это вычисляемое свойство мне нужно зациклить и показать результат, используя v-for .

мое вычисляемое свойство выглядит следующим образом.

   computed:{
        managers(){
       axios.post('/dispatcher/managers',{
                    'catId':this.catId,
                    'route':this.filters.selectedRoute,
                    'date':this.filters.selectedDate,
                    'manager':this.filters.selectedManager
                        }).then(response=>{
                           return response.data;
                        }).catch(err=>{})
            }

    }
  

Когда я пытаюсь выполнить цикл, managers используя v-for , это не работает.

Как я могу заставить это работать? Спасибо.

Ответ №1:

Согласно документам, вам, вероятно, следует использовать наблюдателя: https://v2.vuejs.org/v2/guide/computed.html#Watchers

В этом случае использование опции watch позволяет нам выполнить асинхронную операцию (доступ к API), ограничить частоту выполнения этой операции и установить промежуточные состояния, пока мы не получим окончательный ответ. Ничего из этого не было бы возможно с вычисляемым свойством.

Комментарии:

1. Спасибо за быстрый ответ. Возможно ли использовать вычисляемое свойство в этом случае и заставить его работать?

2. Не со стандартным Vue. Но есть плагин .

3. У меня не так много опыта работы с Vue, но, как правило, вы должны стараться следовать лучшим практикам, установленным фреймворком. Вы, вероятно, попадете в любое количество ловушек, если попытаетесь бороться с тем, как они хотят, чтобы вы что-то делали. Однако 1 для плагина, которым поделился @StephenThomas. Обычно я стараюсь избегать таких вещей (если только это не путь к превращению его в ядро), но это выглядит довольно всеобъемлюще.