SmileZXLee / uni-z-paging

【uni-app下拉刷新、上拉加载】高性能,全平台兼容。支持vue、nvue、vue2、vue3,使用wxs+renderjs实现。支持虚拟列表,支持自定义下拉刷新、上拉加载更多,支持自动管理空数据图、点击返回顶部,支持聊天分页、本地分页,支持国际化等100+项配置
https://z-paging.zxlee.cn
MIT License
871 stars 69 forks source link

1、虚拟列表聊天记录模式跳转到其他页面,返回后无法拖动 2、数据不铺满整个屏幕时 一直显示加载loading 不加载第二页数据 #111

Closed wow-doubao closed 7 months ago

wow-doubao commented 7 months ago

编译平台 HbuilderX 3.99

VUE版本 vue3

运行平台 h5

z-paging版本 2.7.5

问题描述

问题一

A页面使用 虚拟列表聊天记录模式 通过onShow 触发 reload() 获取数据,通过uni.navigateTo() 跳转到B页面后 返回,A页面渲染数据后无法拖拽

<template>
  <view class="box">
    <z-paging ref="paging" v-model="chatData" :auto="false" use-chat-record-mode use-virtual-list
      cell-height-mode="dynamic" @query="queryList">

      <template #top>
        <view @click="to">跳转</view>
      </template>

      <template #cell="{ item, index }">
        <view class="p-20rpx" style="transform: scaleY(-1)">
          {{ item.content }}
        </view>
      </template>

    </z-paging>
  </view>
</template>
<script setup>
import { ref, nextTick } from 'vue'
import { onShow } from "@dcloudio/uni-app"
import { msgList } from '@/common/chat/msg'

const chatData = ref([])
const paging = ref(null)

onShow(async () => {
  await nextTick()
  paging.value.reload()
})

const queryList = async (page, limit) => {
  try {

    const { list } = await msgList({
      topicId: 99,
      page,
      limit
    })

    paging.value.complete(list)
  } catch (error) {
    console.log(error)
    paging.value.complete(false);
  }
}

const to = () => {
  uni.navigateTo({
    url: '/pages/home/index'
  })
}

</script>

<style scoped lang='scss'></style>
问题二

数据不铺满整个屏幕时 一直显示加载loading 不加载第二页数据,点击loading后才加载第二页数据 微信截图_20240125101258

SmileZXLee commented 7 months ago

第二个问题加个inside-more配置即可。或者设置:default-page-size="20"
第一个问题提供完整demo,你提供的无法直接运行,或者提供'@/common/chat/msg'内容。

wow-doubao commented 7 months ago

感谢您的来信,查阅后我将以最快速度回复您,谢谢。

wow-doubao commented 7 months ago

感谢大佬的回复 '@/common/chat/msg'就是获取数据的接口,随便模拟下数据

<template>
  <view class="box">
    <z-paging ref="paging" v-model="chatData" inside-more :auto="false" use-chat-record-mode use-virtual-list
      cell-height-mode="dynamic" @query="queryList">

      <template #top>
        <view @click="to">跳转</view>
      </template>

      <template #cell="{ item, index }">
        <view class="p-20rpx" style="transform: scaleY(-1)">
          {{ item.content + index }}
        </view>
      </template>

    </z-paging>
  </view>
</template>
<script setup>
  import {
    ref,
    nextTick
  } from 'vue'
  import {
    onShow
  } from "@dcloudio/uni-app"

  const chatData = ref([])
  const paging = ref(null)

  onShow(async () => {
    await nextTick()
    paging.value.reload()
  })

  const queryList = async (page, limit) => {
    paging.value.complete(new Array(10).fill({
      content: '测试'
    }))
  }

  const to = () => {
    uni.navigateTo({
      url: '/pages/home/index'
    })
  }
</script>

<style scoped lang='scss'></style>
SmileZXLee commented 7 months ago

感谢反馈,已修复,代码已提交至github,可以更新后再次测试~