#javascript #laravel #vue.js #nuxtjs
#javascript #laravel #vue.js #nuxtjs
Вопрос:
Я новичок в JS и я извлекаю некоторые данные с помощью axios из моего локального API (Laravel)
Всякий раз, когда я обновляю страницу, например, с помощью F5 или CTRL R, css загружается до появления содержимого. Из-за этого страница выглядит уродливо при загрузке данных.
export default {
data() {
return {
user: {},
}
},
async fetch() {
const data = await this.$axios.$get('/users?name=' this.$route.params.name)
this.user = data
console.log(this.user.name)
}
}
Что я могу сделать, чтобы предотвратить это?
Даже если я добавлю пользовательские загрузчики, страница будет отображаться в течение секунды, затем загрузчик появится и будет находиться там до его загрузки. Но почему? И как мне сделать так, чтобы она выглядела лучше?
РЕДАКТИРОВАТЬ: я знаю, что мне нужен загрузчик, но, видимо, я неправильно его реализую. Как уже говорилось, загрузчик уже есть, но он появляется только через 1 секунду после обновления, перед появлением загрузчика всегда отображается пустой css / html без загруженного содержимого.
Комментарии:
1. Вы можете использовать загрузчик, он не будет показывать содержимое, пока ваше обещание не будет выполнено полностью
2. По сути, вы хотите определить оверлей загрузки в верхней части вашей HTML-страницы, а затем удалить или скрыть его в конце асинхронной задачи. Надеюсь, это поможет — я бы с удовольствием поделился некоторыми фрагментами, но в данный момент я не за своим компьютером.
3. Я пытался добавить isLoading bool в блок try, но это оказывает то же влияние, что и написанное выше.
Ответ №1:
вы должны использовать директиву v-if
export default {
data() {
return {
user: {},
isLoading: false
}
},
async fetch() {
this.isLoading = true
const data = await this.$axios.$get('/users?name=' this.$route.params.name)
this.user = data
this.isLoading = false
}
}
…
<div>
<div v-if="isLoading">Loader</div>
<div v-else>Fetched content</div>
</div>
Ответ №2:
То, что вы хотите разместить в этих ситуациях, называется предварительными загрузчиками, или вы также можете использовать скелеты из antd, если вы используете его. Вот ссылка на скелет
https://ant.design/components/skeleton/#header
Также выполните поиск по предварительным загрузчикам, и вы найдете многие из них в codepens или других ссылках, и внедряйте их в свои проекты.
Концепция предварительных загрузчиков заключается в том, что они будут показаны в первую очередь на вашей странице, а когда содержимое загружено, вы просто скрываете или удаляете их полностью со страницы.