z-paging 的使用 uniapp+vue3脚手架

uniapp 中没有合适的分页插件, 所以找到了 z-paging的分页插件使用,这里记录一下用法
本人记录的开发项目是在小程序中使用的

  1. 安装 (因为本人使用的uniapp是 脚手架方式的)
npm install z-paging --save
  1. 配置 page.json easycom
"easycom": {
	"custom": {
	    "^(?!z-paging-refresh|z-paging-load-more)z-paging(.*)": "z-paging/components/z-paging$1/z-paging$1.vue"
	}
}

3.使用
说明, z-paging 默认是占满整个页面的,它会挡住页面的其它元素, 所以, 我们要把所有的元素写在 z-paging 的组件里
在这里插入图片描述
如果不希望铺满屏幕,有两种方法解决
一种方法是 设置 use-page-scroll 这种方式还要引入另外一个组件
在这里插入图片描述
上面的例子中使用的是 HbuilderX 来引入的, 本人使用的是 脚手架, 所以是这样的

import {onLoad,onPageScroll, onReachBottom } from "@dcloudio/uni-app";
import UseZPaging from "z-paging/components/z-paging/js/hooks/useZPaging";
const paging = ref(null)
UseZPaging(paging)

第二种方法 (也是我项目中使用方法)
在这里插入图片描述
在这里插入图片描述
第一次进入时加载了两次
在这里插入图片描述

项目中没有问题的代码

<template>
  <view class="orderwrapper">
    <tabs
        :activeStyle="{
        fontWeight: 'bold',
        transform: 'scale(1.1)'
        }"
        lineWidth:40
        :data="tablist"
        v-model="active"
        lineColor="#27C172"
        @change="tabchange"
    ></tabs>

    <view class="listwrapper">
      <z-paging default-page-no="1"  :auto="false" default-page-size="10" :fixed="false"
                :paging-style="{height:'95vh'}"  ref="paging" v-model="dataList" @query="queryList">
        <!-- z-paging默认铺满全屏,此时页面所有view都应放在z-paging标签内,否则会被盖住 -->
        <!-- 需要固定在页面顶部的view请通过slot="top"插入,包括自定义的导航栏 -->
        <view class="item" v-for="(item,index) in dataList" :key="index">
          <orderitem :order="item" @tap="gotoorderdetail(item)"></orderitem>
        </view>
      </z-paging>
      
    </view>
  </view>
</template>

<script setup>
import {ref} from "vue";
import Tabs from "./components/tabs.vue";
import Orderitem from "./components/orderitem.vue";
import {onLoad,onPageScroll, onReachBottom } from "@dcloudio/uni-app";
import {orderlist} from "../../api/api";
import UseZPaging from "z-paging/components/z-paging/js/hooks/useZPaging";


const tablist = [{
  name:"陪护开始",
  value:1,
},{
  name:"陪护结束",
  value:2
},{
  name:"陪护取消",
  value:3
}]
const paging = ref(null)
const active = ref(1);
const tabchange = ()=>{
  console.log(active.value);
  paging.value.reload()
}

// v-model绑定的这个变量不要在分页请求结束中自己赋值,直接使用即可
const dataList = ref([])
UseZPaging(paging)
onLoad(()=>{
  queryList();
})



const queryList = (pageNo,pageSize) => {
  let params = {
    page:pageNo,
    list_rows:pageSize,
    status:active.value
  }
  orderlist(params).then(res=>{
    console.log(res);
    paging.value.complete(res.data.order_list);
  }).catch(res=>{
    paging.value.complete(false);
  })
}

const gotoorderdetail = (item)=>{
  console.log(item)
  uni.navigateTo({
    url:"/pages/order/orderdetail?id="+item.id
  })
}

</script>


<style scoped lang="scss">
.orderwrapper{
  background:#f7f7f7;
  height:100vh;
  .listwrapper{

    box-sizing: border-box;
    &:deep(.uni-list-item__content){
      color:#999;
    }
    &:deep(.uni-list-item__container){
      padding:15rpx 15rpx 5rpx;
    }

    &:deep(.uni-section){
      border-bottom:1rpx solid #eee;
      .uni-section-header{
        .uni-section-header__decoration{
          background-color:#27C172;
        }
      }
    }
    &:deep(.uni-list--border){
      &:after{
        height:0 !important;
      }


    }
  }

}
</style>

Vue3UniApp和Z-Paging是现代前端开发中常用的技术栈和组件库。以下是对它们的介绍: ### Vue3 Vue3Vue.js框架的最新版本,它在性能和开发体验上进行了大量优化。Vue3引入了Composition API,使得代码组织和复用更加灵活。此外,Vue3还改进了虚拟DOM的性能,增强了TypeScript支持,并提供了更好的响应式系统。 ### UniApp UniApp是一个使用Vue.js开发跨平台应用的前端框架。它允许开发者使用一套代码同时构建iOS、Android、Web以及各种小程序(如微信小程序、支付宝小程序等)。UniApp通过封装各个平台的原生API,使得开发者可以更专注于业务逻辑,而不必处理平台差异。 ### Z-Paging Z-Paging是一个基于Vue3UniApp的分页组件库。它提供了一套简洁易用的API,帮助开发者快速实现分页功能。Z-Paging支持多种分页模式,如上拉加载、下拉刷新等,并且可以自定义分页样式和功能。使用Z-Paging可以大大简化分页功能的开发过程,提高开发效率。 #### 使用Z-Paging的基本步骤: 1. **安装Z-Paging**: ```bash npm install z-paging ``` 2. **在项目中引入Z-Paging**: ```javascript import Vue from &#39;vue&#39;; import ZPaging from &#39;z-paging&#39;; Vue.use(ZPaging); ``` 3. **在组件中使用Z-Paging**: ```html <template> <z-paging :request="request" ref="paging"> <template #default="{ list }"> <div v-for="item in list" :key="item.id"> {{ item.name }} </div> </template> </z-paging> </template> <script> export default { methods: { request(page, pageSize) { // 模拟异步请求 return new Promise((resolve) => { setTimeout(() => { resolve({ list: Array.from({ length: pageSize }, (_, index) => ({ id: (page - 1) * pageSize + index + 1, name: `Item ${(page - 1) * pageSize + index + 1}`, })), total: 100, }); }, 1000); }); }, }, }; </script> ``` 通过以上步骤,你可以在Vue3UniApp项目中快速集成Z-Paging,实现高效的分页功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A黄俊辉A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值