@hzy1123581324/z-view-ui
Version:
z-view-ui是使用vue3开发的组件,开发中,有部分组件功能未实现,慎用
43 lines (40 loc) • 1.24 kB
JavaScript
import {onPageScroll,onShow,onHide } from "@dcloudio/uni-app";
import { debounce } from "../utils/optimize.js";
import {ref } from "vue";
export const userScroll = ({
rememberTabPageScroll = false,
} = {}) => {
let isScrolling = ref(false);
let timer = null;
// 这是页面记录滚动位置
let scrollTop = ref(0);
let pageHide = false;
const scrollFunc = debounce((e) => {
scrollTop.value = e.detail.scrollTop;
})
onPageScroll((e) => {
pageHide || (scrollTop.value = e.scrollTop);
isScrolling.value = true;
clearTimeout(timer);
timer = setTimeout(() => {
isScrolling.value = false;
}, 400)
})
rememberTabPageScroll && onShow(() => {
pageHide = false;
setTimeout(() => {
uni.pageScrollTo({
duration: -1, //过渡时间必须为0,uniapp bug,否则运行到手机会报错
scrollTop: scrollTop.value, //滚动到实际距离是元素距离顶部的距离减去最外层盒子的滚动距离
})
}, 100);
onHide(() => {
pageHide = true;
})
})
return {
isScrolling,
scrollFunc,
scrollTop,
}
}