@anton_trofimov95

Как в vue axios менять состояние кнопки и показывать прелоадер?

Вот код. По нажатию "купить" у меня генерируется get запрос посредством axios (временно вывел в переменную {{info}}). Как мне при загрузке показать прелоадер у кнопки, по которой кликнули и после загрузки изменить текст на "В корзине"? Сейчас сразу все кнопки меняют текст
  • Вопрос задан
  • 594 просмотра
Пригласить эксперта
Ответы на вопрос 2
Kozack
@Kozack Куратор тега Vue.js
Thinking about a11y
Примерно так:
async add(good) {
  const promise = axios.get(good) // Отправляем запрос на сервер

  this.buttonText = 'Loading...' // Изменяем текст на кнопке
  this.buttonDisabled = true // Кнопку стоит отключать на период запросов

  await promise // Ожидаем завершения запроса

  this.buttonText = 'В корзине' // Изменяем текст на кнопке
  this.buttonDisabled = false // Разблокировать кнопку если нужно
}
Ответ написан
@NerVik
Замени свой
data: {}

на
data(): {
  return {
    goods: [
      {
        imgSrc: '../dist/cropped-img/img1.png',
        title: '«Рождение Венеры» Сандро Боттичелли',
        oldPrice: '2 000 000',
        newPrice: '1 000 000',
        inStock: true
      },
      {
        imgSrc: '../dist/cropped-img/img2.png',
        title: '«Тайная вечеря» Леонардо да Винчи',
        oldPrice: '',
        newPrice: '3 000 000',
        inStock: true
      },
      {
        imgSrc: '../dist/cropped-img/img3.png',
        title: '«Сотворение Адама» Микеланджело',
        oldPrice: '6 000 000',
        newPrice: '5 000 000',
        inStock: true
      },
      {
        imgSrc: '../dist/cropped-img/img2.png',
        title: '«Урок анатомии» Рембрандт',
        oldPrice: '',
        newPrice: '',
        inStock: false
      }
    ],
    info: null,
    button: 'Купить',
    //loading: true
  }
}
Ответ написан
Ваш ответ на вопрос

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

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