@223606322
начинающий web-разработчик

Как правильно реализовать прелоадер по условию во vue?

Есть такой код
<template>
    <div v-if="$store.getters.list">
      <List>появится после выполнения асинхронного запроса</List>
    </div>
    <div v-else>
      <Preloader v-if="$store.state.loader">индикатор загрузки</Preloader>
      <div v-if="!$store.state.loader">Не удалось загрузить данные с сервера</div>
    </div>
  </template>


- здесь мы получаем список каких-то айтемов, которые придут после выполнения запроса на сервер. То есть, открывается страница и сразу происходит запрос на сервер, после чего данные записываются в list геттеров vuex.
Иначе показывается другой блок, в котором есть прелоадер и статичная информация в случае если по какой-то причине запрос на сервер не сработал

<Preloader v-if="$store.state.loader">индикатор загрузки</Preloader>
- это отдельный компонент с индикатором загрузки, который показывается в начале запроса и скрывается после завершения запроса. То есть в state vuex есть свойство loader, которое меняется на true/false в зависимости от того завершился запрос на сервер или нет

<div v-if="!$store.state.loader">Не удалось загрузить данные с сервера</div>
- этот блок как раз и содержит в себе ту информацию, которая должна быть показана если в запросе ничего не пришло/запрос не был выполнен.

Это сейчас работает, но вопрос в том, такая реализация- это нормально или есть способ сделать как-то более лаконично чем писать такте конструкции с v-else
<div v-else>
      <Preloader v-if="$store.state.loader">индикатор загрузки</Preloader>
      <div v-if="!$store.state.loader">Не удалось загрузить данные с сервера</div>
    </div>
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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