更新记录

1.1.3(2021-11-24) 下载此版本

支付宝小程序、百度小程序、字节跳动小程序、qq小程序 适配

1.1.2(2021-11-23) 下载此版本

文档更新

1.1.1(2021-11-23) 下载此版本

再次加载分页错误问题

查看更多

平台兼容性

Vue2 Vue3
×
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.1.0 ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

环境

  • scss、typescript、vue3
  • 需要安装uni-ui

功能介绍

  • 上拉加载,下拉刷新
    • 分页加载数据
  • 自定义导航栏
  • tabs
  • tabs组合上拉加载、下拉刷新

注意事项

  • 自定义导航栏仅支持
    • 微信小程序 7.0+、百度小程序、H5、App(2.0.3+)
    • 其他平台的需要在pages.json声明 style -> navigationBarTitleText 标题

存在问题

  • v-model:xxx 无法使用

目录结构

  • components

    • zk-comm-content-scroll
    • zk-comm-content.vue 内容区域
    • zk-comm-navbar.vue 自定义导航栏
    • zk-comm-scroll.vue 上拉加载,下拉刷新
  • utils目录

    • log.ts log日志输出
    • toast.ts 提示
    • request.ts 网络请求
    • update.ts 小程序应用更新

      其他

  • uniapp、vue3、typescript 基础项目

  • 页面自定义了导航栏,需要配置开启自定义导航栏

    • pages.json 配置 navigationStyle 为custom
      "globalStyle": {
      // ...
      "navigationStyle": "custom"
      }

使用示例

<template>
  <zk-comm-scroll title="加载更多" :isLeft="true" :refresh="true" @load-more="loadMore">
    <view
      v-for="(item, index) in list"
      :key="index"
      style="border: 1px solid red; height: 100px"
    >
      <text>{{ item.id }} {{ item.title }}</text>
    </view>
  </zk-comm-scroll>
</template>

<script lang="ts">
import { defineComponent, ref, onMounted } from "vue";
import { cloneDeep } from "lodash";
import log from "@/uni_modules/zk-comm/utils/log";
import { CallLoadMoreType } from "@/uni_modules/zk-comm/types";

export interface List {
  title: string;
  id: number;
}
export default defineComponent({
  name: "PagesLoadMore",
  setup() {
    const list = ref<List[]>([]);
    const sourceList = ref<List[]>([]);

    // moack 数据
    function getList() {
      const result: List[] = [];
      for (let i = 0; i < 35; i += 1) {
        result.push({
          title: `当前是第${i}项`,
          id: i,
        });
      }
      sourceList.value = result;
      const v = cloneDeep(result);
      list.value = cloneDeep(v.splice(0, 10));
    }
    onMounted(() => {
      getList();
    });
    // 加载更多
    function loadMore(data: CallLoadMoreType) {
      log.d(data.page, "page");
      if (data.page === 1) {
        refresh(data);
        return;
      }
      const result = cloneDeep(sourceList.value);
      const v = result.splice((data.page - 1) * data.size, 10);
      log.d(v, "分页的数据");
      setTimeout(() => {
        data.done(v);
        list.value = list.value.concat(v);
      }, 2000);
    }

    // 刷新
    function refresh(data: CallLoadMoreType) {
      setTimeout(() => {
        data.done();
        const result = cloneDeep(sourceList.value);
        list.value = result.splice(0, 10);
      }, 2000);
    }
    return {
      loadMore,
      list,
    };
  },
});
</script>

<style></style>

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问