首页 > 解决方案 > 如何在 Vuejs 和 Vuetify 的延迟加载上延迟加载项目列表?

问题描述

我试图制作一个无限滚动列表,但它真的不是延迟加载,被困了几个小时,整个列表都会进来。

      .....
    <v-col
      v-for="(post, i) in posts"
      :key="i"
      cols="12"
    >
    <v-lazy
    v-model="isActive"
    :options="{
      threshold: .5
    }"
    transition="fade-transition"
  >
          {{Content here}}
     </....

用于测试的 API:https ://jsonplaceholder.typicode.com/posts

标签: vue.jsvuejs2vuetify.js

解决方案


有一个新virtual-scroller组件,但它不适用于网格行/列等响应式内容。而是使用v-lazy...

我发现列需要定义最小高度(大约为卡片的预期高度),以便v-lazy交叉点观察器工作。使用类似v-sheet或的东西v-responsive来设置min-height和包含卡片。

v-model还将的绑定v-lazy到每个帖子(即:post.isActive),而不是全局变量isActive...

        <v-col lg="3" md="4" sm="6" cols="12" v-for="(post, index) in posts">
                <v-sheet min-height="250" class="fill-height" color="transparent">
                    <v-lazy 
                        v-model="post.isActive" :options="{
                            threshold: .5
                        }"
                        class="fill-height">
                        <v-card class="fill-height" hover>
                            <v-card-text>
                                <v-row :key="index" @click="">
                                    <v-col sm="10" cols="12" class="text-sm-left text-center">
                                        #{{ (index+1) }}
                                        <h2 v-html="post.title"></h2>
                                        <div v-html="post.body"></div>
                                    </v-col>
                                </v-row>
                            </v-card-text>
                        </v-card>
                    </v-lazy>
                </v-sheet>
        </v-col>

   

演示:https ://codeply.com/p/eOZKk873AJ


推荐阅读