当前位置:首页 > uni-app

uniapp实现懒加载

2026-02-05 17:35:06uni-app

uniapp实现懒加载的方法

图片懒加载uniapp中,可以使用<image>标签的lazy-load属性实现图片懒加载。该属性仅在pagescroll-view时生效,且需要设置scroll-view的高度。

<scroll-view scroll-y style="height: 100vh;">
  <image 
    v-for="(item, index) in list" 
    :key="index" 
    :src="item.src" 
    lazy-load
    mode="aspectFill"
  ></image>
</scroll-view>

列表数据懒加载 对于长列表数据的懒加载,可以通过监听scroll-view@scrolltolower事件或页面的onReachBottom生命周期实现。

export default {
  data() {
    return {
      list: [],
      page: 1,
      loading: false,
      noMore: false
    }
  },
  methods: {
    loadMore() {
      if (this.loading || this.noMore) return;
      this.loading = true;

      // 模拟异步请求
      setTimeout(() => {
        const newData = Array(10).fill(0).map((_,i) => ({ 
          id: this.list.length + i,
          src: `https://picsum.photos/200/300?random=${this.list.length + i}`
        }));

        this.list = [...this.list, ...newData];
        this.page++;
        this.loading = false;

        // 假设总共30条数据
        if (this.list.length >= 30) {
          this.noMore = true;
        }
      }, 1000);
    }
  },
  onReachBottom() {
    this.loadMore();
  }
}

组件懒加载 使用vue的异步组件配合uniappeasycom机制可以实现组件懒加载。

uniapp实现懒加载

pages.json中配置:

{
  "easycom": {
    "^lazy-(.*)": "@/components/lazy/$1.vue"
  }
}

创建异步组件:

uniapp实现懒加载

// components/lazy/my-component.vue
export default {
  name: 'lazy-my-component',
  // 组件实现
}

使用时直接按需引入:

<template>
  <lazy-my-component v-if="showComponent" />
</template>

注意事项

  • 图片懒加载需要真机调试,部分模拟器可能无法正常显示效果
  • 列表懒加载应配合加载状态提示和没有更多数据提示
  • 组件懒加载适用于较大且不立即需要的组件
  • iOS平台需要确保scroll-view有明确的高度值

通过以上方法可以有效减少首屏加载时间,提升用户体验。根据实际需求选择适合的懒加载方案,也可以组合使用多种方式。

标签: 加载uniapp
分享给朋友:

相关文章

uniapp前端项目

uniapp前端项目

Uniapp 前端项目开发指南 Uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端发布(如微信小程序、H5、App 等)。以下是关于 Uniapp 前端项目的关键信息: 环…

uniapp adb

uniapp adb

在UniApp中使用ADB的方法 ADB(Android Debug Bridge)是Android开发中常用的调试工具,可用于UniApp项目的真机调试、日志查看等操作。以下是具体使用方法: 连接…

uniapp 摇骰子

uniapp 摇骰子

uniapp 摇骰子实现方法 页面布局 在 pages 目录下创建骰子页面(如 dice.vue),使用 view 和 image 组件构建骰子界面。骰子图片可通过静态资源或网络地址加载。 <…

uniapp布局规范

uniapp布局规范

uniapp布局规范 uniapp的布局规范基于Flexbox模型,支持跨平台开发,需兼顾不同设备的适配性。以下是核心布局要点: Flex布局基础 使用Flexbox实现弹性布局,默认display…

uniapp 退场动画

uniapp 退场动画

实现退场动画的方法 在UniApp中实现退场动画可以通过CSS动画、Vue过渡效果或第三方动画库完成。以下是几种常见方法: 使用CSS动画 通过定义@keyframes和animation属性实现退…

vue 实现模块加载

vue 实现模块加载

Vue 实现模块加载的方法 使用动态导入(Dynamic Import) 动态导入是 ECMAScript 模块系统的特性,Vue 项目可以通过 import() 语法实现按需加载模块。这种方式在构建…