uni-app 下拉刷新,上拉加載更多打瘪, mescroll組件超級(jí)方便

之前一直使用的uni-app自帶的刷新方式友鼻,后來(lái)看到插件市場(chǎng)中人氣最旺的mescroll,一直也沒(méi)嘗試用闺骚,今天特意看了下他的文檔彩扔,刷新數(shù)據(jù)so easy

1.下載插件

點(diǎn)擊 mescroll使用 HBuilderX 導(dǎo)入插件

2.無(wú)需配置pages.json (檢查是否配置了多余的屬性):

{
       "path" : "pages/xxx/xxx", // 在具體的頁(yè)面中, mescroll-body 無(wú)需像 mescroll-uni 那樣需要配置 pages.json
       "style" : {
            "navigationBarTitleText" : "xxx",
            "backgroundColorTop":"#FFFFFF", // iOS下拉bounce回彈區(qū)域的顏色 (與down.bgColor同步)
            "backgroundColorBottom":"#FFFFFF", // iOS上拉bounce回彈區(qū)域的顏色 (與up.bgColor同步)
            "disableScroll": false, //刪除此項(xiàng): mescroll-body必須允許原生頁(yè)面滾動(dòng), 默認(rèn)false
            "enablePullDownRefresh" : false, //刪除此項(xiàng): 不開(kāi)啟系統(tǒng)自帶的下拉刷新, 默認(rèn)false
            "app-plus" : {
                "bounce" : "none" //可選: 是否禁止iOS回彈和Android觸頂觸底的弧形陰影, 默認(rèn)允許 (可配在 'globalStyle')
            },
            "mp-alipay":{"allowsBounceVertical":"NO"} //可選: 取消支付寶和釘釘小程序的iOS回彈 (可配在 'globalStyle')
        }
    },
    "globalStyle" : {
        "backgroundColorTop":"#FFFFFF" // iOS APP真機(jī)bounce回彈區(qū)域默認(rèn)灰色,建議統(tǒng)一重置為白色
    }
        
  1. import MescrollMixin僻爽, 并設(shè)置mixins
<script>
    import {
        getOrderList
    } from '@/common/apis/mine.js'
    import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
    export default {
        mixins: [MescrollMixin], // 使用mixin
    }
</script>

4.設(shè)置 mescroll-body

<template>
    <view class="content">
        <!-- 
         下面是固定格式, 函數(shù)名千萬(wàn)不要亂寫(xiě)
         ref="mescrollRef" 
         @init="mescrollInit" 
         @down="downCallback"
         @up="upCallback"
         -->
        <mescroll-body class='content__scroll' ref="mescrollRef" @init="mescrollInit" @down="downCallback"
            @up="upCallback">
            <block v-for="(item,index) in dataList" :key="index">
                <view class="content__scroll__item">
                    <text>{{item.hospital_name}}</text>
                    <text>{{item.depart}}</text>
                    <text>{{item.in_date}}</text>
                </view>
            </block>
        </mescroll-body>
    </view>
</template>

5.加載數(shù)據(jù)

mescrollInitdownCallback回調(diào)函數(shù)不用寫(xiě)虫碉,mixins已默認(rèn)

async upCallback(page) {
                try {
                    var params = {};
                    params.page = page.num; // 頁(yè)碼, 默認(rèn)從1開(kāi)始
                    params.perPage = page.size; // 頁(yè)長(zhǎng), 默認(rèn)每頁(yè)10條

                    var res = await getOrderList(params);
                    let curDataList = res.orderlist;
                    var pageData = res.pageData;

                    //設(shè)置列表數(shù)據(jù)
                    if (page.num == 1) this.dataList = []; //如果是第一頁(yè)需手動(dòng)置空列表
                    this.dataList = this.dataList.concat(curDataList); //追加新數(shù)據(jù)

                    this.mescroll.endByPage(curDataList.length, pageData.pageNum);
                    console.log("mescroll-body pageData.curPage: ", pageData.curPage, ' pageData.pageNum: ', pageData
                        .pageNum);
                } catch (e) {
                    //  請(qǐng)求失敗,隱藏加載狀態(tài)
                    console.log('上拉加載更多出錯(cuò)了');
                    this.mescroll.endErr()
                }
            }

頁(yè)面完整代碼如下:

<template>
    <view class="content">
        <!-- 
         下面是固定格式, 函數(shù)名千萬(wàn)不要亂寫(xiě)
         ref="mescrollRef" 
         @init="mescrollInit" 
         @down="downCallback"
         @up="upCallback"
         -->
        <mescroll-body class='content__scroll' ref="mescrollRef" @init="mescrollInit" @down="downCallback"
            @up="upCallback">
            <block v-for="(item,index) in dataList" :key="index">
                <view class="content__scroll__item">
                    <text>{{item.hospital_name}}</text>
                    <text>{{item.depart}}</text>
                    <text>{{item.in_date}}</text>
                </view>
            </block>
        </mescroll-body>
    </view>
</template>

<script>
    import {
        getOrderList
    } from '@/common/apis/mine.js'
    import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
    export default {
        mixins: [MescrollMixin], // 使用mixin
        data() {
            return {
                dataList: [],
            }
        },
        mounted() {
            this.mescroll.setPageSize(20); // 設(shè)置分頁(yè)加載每頁(yè)size
            this.mescroll.optUp.empty.icon =
            "https://saas-one.oss-cn-beijing.aliyuncs.com/H5/alopecia/data.png"; // 動(dòng)態(tài)設(shè)置空布局的圖標(biāo)
        },
        methods: {

            async upCallback(page) {
                try {
                    var params = {};
                    params.page = page.num; // 頁(yè)碼, 默認(rèn)從1開(kāi)始
                    params.perPage = page.size; // 頁(yè)長(zhǎng), 默認(rèn)每頁(yè)10條

                    var res = await getOrderList(params);
                    let curDataList = res.orderlist;
                    var pageData = res.pageData;

                    //設(shè)置列表數(shù)據(jù)
                    if (page.num == 1) this.dataList = []; //如果是第一頁(yè)需手動(dòng)置空列表
                    this.dataList = this.dataList.concat(curDataList); //追加新數(shù)據(jù)

                    // 請(qǐng)求成功,隱藏加載狀態(tài)
                    //方法一(推薦): 后臺(tái)接口有返回列表的總頁(yè)數(shù) totalPage
                    this.mescroll.endByPage(curDataList.length, pageData.pageNum);
                    console.log("mescroll-body pageData.curPage: ", pageData.curPage, ' pageData.pageNum: ', pageData
                        .pageNum);
                } catch (e) {
                    //  請(qǐng)求失敗,隱藏加載狀態(tài)
                    console.log('上拉加載更多出錯(cuò)了');
                    this.mescroll.endErr()
                }
            }
        }
    }
</script>

<style lang="scss">
    .content {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;

        &__scroll {
            width: 100%;

            &__item {
                width: 100%;
                color: #333;
                display: flex;
                flex-direction: column;
                justify-content: flex-start;
                align-items: flex-start;
                background-color: #F6F6F6;
                margin-bottom: 20rpx;

            }
        }


    }
</style>

更多其他用法請(qǐng)點(diǎn)擊此處,查看官方文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末胸梆,一起剝皮案震驚了整個(gè)濱河市敦捧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌碰镜,老刑警劉巖绞惦,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異洋措,居然都是意外死亡济蝉,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)王滤,“玉大人贺嫂,你說(shuō)我怎么就攤上這事⊙阆纾” “怎么了第喳?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)踱稍。 經(jīng)常有香客問(wèn)我曲饱,道長(zhǎng),這世上最難降的妖魔是什么珠月? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任扩淀,我火速辦了婚禮,結(jié)果婚禮上啤挎,老公的妹妹穿的比我還像新娘驻谆。我一直安慰自己,他們只是感情好庆聘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布胜臊。 她就那樣靜靜地躺著,像睡著了一般伙判。 火紅的嫁衣襯著肌膚如雪象对。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,084評(píng)論 1 291
  • 那天宴抚,我揣著相機(jī)與錄音织盼,去河邊找鬼。 笑死酱塔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的危虱。 我是一名探鬼主播羊娃,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼埃跷!你這毒婦竟也來(lái)了蕊玷?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤弥雹,失蹤者是張志新(化名)和其女友劉穎垃帅,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體剪勿,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贸诚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酱固。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡械念,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出运悲,到底是詐尸還是另有隱情龄减,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布班眯,位于F島的核電站希停,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏署隘。R本人自食惡果不足惜宠能,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望定踱。 院中可真熱鬧棍潘,春花似錦、人聲如沸崖媚。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)畅哑。三九已至肴楷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間荠呐,已是汗流浹背赛蔫。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泥张,地道東北人呵恢。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像媚创,于是被迫代替她去往敵國(guó)和親渗钉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容