Задать вопрос

Как сделать прелоадер в Vue?

Как отловить момент когда отправлены все ajax запросы и получены ответы, что бы менять значение showPreloader с false на true и обратно?

Использую axios. Делаю SPA, и при переходе по страницам, значение showPreloader должно менять на true, пока не получу все ответы с отправленных запросов в API. Так должно быть единоразово , при created.
  • Вопрос задан
  • 5385 просмотров
Подписаться 3 Простой 1 комментарий
Решение пользователя askhat К ответам на вопрос (2)
askhat
@askhat
Если операций много и они асинхронны, можно воспользоваться паттерном Locking Pool:

const store = {
  state: {
    lockingPool: 0
  },
  getters: {
    isUiLocked: state => state.lockingPool > 0
  },
  mutations: {
    lockUi: state => state.lockingPool++,
    unlockUi: state => state.lockingPool--
  },
  actions: {
    async someAction ({ commit }) {
      commit('lockUi')
      const { data } = await http.get('/some-url')
      commit('unlockUi')
    }
  }
}
Ответ написан