首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理数据加载- Vue

处理数据加载- Vue
EN

Stack Overflow用户
提问于 2020-04-22 16:25:42
回答 3查看 185关注 0票数 1

我正在将项目数据从Vuex加载到组件中。当我刷新页面时,它需要一两秒钟来加载数据,这会导致页面短暂中断:

有没有什么方法可以让我更优雅地处理这件事?即使只有一个白色屏幕也会看起来更好。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-22 16:39:00

你可以简单地为它添加一个加载器。现在,许多网站都会显示漂亮的加载图标或徽标或消息,当数据为loading.For时,检查数据是否正在加载,然后显示加载程序,否则在该页面中显示数据。

让我们举一个小例子来说明我的意思。

代码语言:javascript
复制
Vue.component('loading-screen', {
  template: '<div id="loading">Loading...</div>'
})

new Vue({
  el: '#app',
  data: {
    isLoading: true
  },
  mounted () {
    setTimeout(() => {
      this.isLoading = false
    }, 3000)
  }
})
代码语言:javascript
复制
body
  margin 0

#loading
  background-color #63ab97
  color white
  font-size 32px
  padding-top 10vh
  height 100vh
  text-align center
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <loading-screen v-if="isLoading"></loading-screen>
  <h1 v-else>Hello world!</h1>
</div>

票数 1
EN

Stack Overflow用户

发布于 2020-04-22 16:37:47

您可以在该页面上添加预加载器,该预加载器会在显示实际页面之前加载几秒钟

票数 1
EN

Stack Overflow用户

发布于 2020-04-22 16:49:20

对于exapmle,您可以这样做:

首先创建一个名为example loader的组件

代码语言:javascript
复制
//loader.vue

<template>
   <div class="loader">
      <p>Loading...</p>
   </div>
</template>
<style scoped>
.loader {
   width: 100vw;
   height: 100vh;
   background: white;
   display: flex;
   justify-content: center;
   align-items: center;
   position: fixed;
   left: 0;
   top: 0;
   z-index: 1000000;
}
</style>

现在您需要在需要的页面上导入您的加载器。然后在其上添加一个v-if。您需要在您的Vuex store.The loading属性初始设置为true的状态中添加一个新属性。加载完所有内容后,只需将loading设置为false,组件就会消失。

代码语言:javascript
复制
<template>
   <div>
      <loader v-if="$store.state.loading"></loader>
   </div>
</template>
import loader from "path/to/loader";
export default {
   components: {
      loader: loader
   }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61360511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档