import { ref } from 'vue'; // 小程序无法在hook中使用页面级别生命周期,需单独传入: https://ask.dcloud.net.cn/question/161173 // import { onPageScroll, onReachBottom, onPullDownRefresh} from '@dcloudio/uni-app'; /** * mescroll-body写在子组件时,需通过useMescrollComp补充子组件缺少的生命周期, 相当于vue2的mescroll-comp.js文件 * 必须传入onPageScroll, onReachBottom * 当down.native为true时,需传入onPullDownRefresh */ function useMescrollComp(onPageScroll, onReachBottom, onPullDownRefresh){ // 因为子组件无onPageScroll和onReachBottom的页面生命周期,需在页面传递进到子组件 onPageScroll(e=>{ handlePageScroll(e) }) onReachBottom(()=>{ handleReachBottom() }) // 当down的native: true时, 还需传递此方法进到子组件 onPullDownRefresh && onPullDownRefresh(()=>{ handlePullDownRefresh() }) const mescrollItem = ref(null) const handlePageScroll = (e)=>{ const mescroll = getMescroll() mescroll && mescroll.onPageScroll(e); } const handleReachBottom = ()=>{ const mescroll = getMescroll() mescroll && mescroll.onReachBottom(); } const handlePullDownRefresh = ()=>{ const mescroll = getMescroll() mescroll && mescroll.onPullDownRefresh(); } const getMescroll = ()=>{ if(mescrollItem.value && mescrollItem.value.getMescroll){ return mescrollItem.value.getMescroll() } return null } return { mescrollItem, getMescroll } } export default useMescrollComp