i***@yeah.net
i***@yeah.net
  • 发布:2022-04-27 18:24
  • 更新:2023-04-18 18:30
  • 阅读:716

#插件讨论# 【 【wxs renderjs实现】高性能的下拉刷新上拉加载组件 - wenju 】vue3组合式api怎么引入

分类:uni-app

在 vue3 的 组合式api 中怎么引入

2022-04-27 18:24 负责人:无 分享
已邀请:
豫见菀风

豫见菀风

大佬解决了吗?

小魏啊

小魏啊 - 我是小魏

template写法不变

<template>  
    <view class="content">  
        <!-- 滚动容器 -->  
        <mescroll-uni  
            ref="mescrollRef"   
            @init="mescrollInit"  
            @down="downCallback"   
            @up="upCallback"  
            :down="MescrollConfig.downOption"   
            :up="MescrollConfig.upOption"  
        >  
        </mescroll-uni>  
    </view>  
</template>

js 部分就是取巧把 this.mescroll 传参到setup 函数内部中

<script>  
    import { reactive } from "vue";  
    import MescrollMixin from '@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js';  
    export default {  
        mixins: [ MescrollMixin ],  
        setup() {  
            const MescrollConfig = reactive({  
                downOption: {},  
                upOption: {}  
            });  

            const handleGetList = (mescroll, page) => {  
                console.log(page);  
                mescroll.endBySize(0, 0);  
            };  

            return { MescrollConfig, handleGetList }  
        },  

        methods: {  
            downCallback() {  
                this.mescroll.resetUpScroll();  
            },  
            upCallback({ num, size }) {  
                this.handleGetList(this.mescroll, { num, size });  
            }  
        }  
    }  
</script>
const307

const307 - 307

vue3.2x可以多封成一个组件

<template>  
    <view>  
        <mescroll-uni  
            :ref="mescrollRef"  
            :top="topHeight"  
            @init="mescrollInit"  
            @down="downCallback"  
            @up="upCallback"  
            :down="MescrollConfig.downOption"  
            :up="MescrollConfig.upOption"  
        >  
            <slot />  
        </mescroll-uni>  
    </view>  
</template>

<script setup>  
    const emit = defineEmits(['update:mescroll']);  
    const props = reactive({  
        mescroll: {},  
    });  
    const mescrollRef = ref();  
    const MescrollConfig = reactive({  
        downOption: {  
            auto: false,  
            autoShowLoading: true,  
            textColor: '#999',  
            offset: 100,  
        },  
        upOption: {  
            auto: false,  
            noMoreSize: 20,  
        },  
    });  
    const topHeight = computed(() => {  
        return (750 / uni.upx2px(750)) * (0);  
    });  
    const mescrollInit = (e) => {  
        props.mescroll = e;  
        emit('update:mescroll', e);  
    };  
        //回调可以自己emit出去方便页面组件操作  
    const downCallback = () => {  
        if (props.mescroll.optUp.use) {  
            props.mescroll.resetUpScroll();  
        } else {  
            setTimeout(() => {  
                props.mescroll.endSuccess();  
            }, 500);  
        }  
    };  
    // 上拉加载的回调  
    const upCallback = () => {  
        // mixin默认延时500自动结束加载  
        setTimeout(() => {  
            props.mescroll.endErr();  
        }, 500);  
    };  
</script>
  • 1***@qq.com

    同样遇到了vue3项目mescrollBody只能向下滑动,向上无法滑动,所以是没办法解决吗...

    2022-12-09 20:25

  • const307

    回复 1***@qq.com: 自己加个vue3的监听滑动,然后去调onPageScroll({ scrollTop: e })就行

    2022-12-12 16:40

  • const307

    回复 const307: mescrollRef.value.onPageScroll({ scrollTop: e })

    2022-12-12 16:41

wenju

wenju - https://www.mescroll.com -- 精致的下拉刷新和上拉加载组件

已更新vue3示例,请点击页面右上角的 "使用HBuilderX导入示例项目"或"下载示例项目ZIP"

要回复问题请先登录注册