代码之家  ›  专栏  ›  技术社区  ›  Daniel_Knights

处理数据加载-Vue

  •  1
  • Daniel_Knights  · 技术社区  · 4 年前

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

    example of page breaking on refresh

    有没有办法让我更优雅地处理这件事?即使只是一个白色的屏幕也会看起来更好。

    2 回复  |  直到 4 年前
        1
  •  1
  •   Dcoder14    4 年前

    只需添加一个加载程序即可。现在很多网站都在显示漂亮的加载图标、徽标或消息正在加载。用于检查是否正在加载数据,然后显示加载程序,否则将在该页中显示数据。

    Vue.component('loading-screen', {
      template: '<div id="loading">Loading...</div>'
    })
    
    new Vue({
      el: '#app',
      data: {
        isLoading: true
      },
      mounted () {
        setTimeout(() => {
          this.isLoading = false
        }, 3000)
      }
    })
    body
      margin 0
    
    #loading
      background-color #63ab97
      color white
      font-size 32px
      padding-top 10vh
      height 100vh
      text-align center
    <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>
        2
  •  1
  •   nitrocode    4 年前

    您可以在该页面上添加一个预加载程序,该程序在显示实际页面之前加载几秒钟

        3
  •  1
  •   Ilijanovic    4 年前

    loader

    //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中的状态商店。商店 loading 属性最初为true。当你把所有的东西都装上后 错误和成分分解。

    <template>
       <div>
          <loader v-if="$store.state.loading"></loader>
       </div>
    </template>
    import loader from "path/to/loader";
    export default {
       components: {
          loader: loader
       }
    }