Mint UI—loadmore—Pull down下拉刷新(图文详情)

it2026-04-11  4

Mint UI—loadmore—Pull down下拉刷新

第一步:在官网复制所需代码 loadmore

<mt-loadmore :top-method="loadTop" // 此方法用于执行刷新,没有这个方法就没办法刷新,并在methods写这个方法 @top-status-change="handleTopChange" > // 写了slot="top"就证明是下拉刷新,位置是在页面上的上方 <div slot="top" class="mint-loadmore-top"> <span v-show="topStatus !== 'loading'" // :class="{'rotate': topStatus === 'drop'}"> ↑ </span> <span v-show="topStatus === 'loading'">↓</span> </div> <div> 。。。// 自己写的页面内容 </div> </mt-loadmore>

第二步:方法

data () { return { topStatus: '' // 在data里定义topStatus用来储存下拉刷新时的状态,pull loading drop } }, methods: { loadTop() { // 下拉刷新方法 }, handleTopChange(status) {// 查看下拉刷新状态 this.topStatus = status; //此处将获取到的状态赋值给topStatus,在第一步给出的代码的span标签里进行调用, 用来判断状态到底是下拉加载还是已经刷新结束并执行相应的动作 console.log(status) // 可以console.log看一下三个状态分别是什么 } }

console.log发现只有两个状态,而没有pull,并看图发现下拉之后并没有向上回收,还能看到下拉箭头,该如何解决:

第三步:解决下拉刷新不向上回收问题 1、在dom里操作

ref="loadmore"

2、添加方法

loadTop() { //下拉刷新方法 this.$refs.loadmore.onTopLoaded(); //下拉刷新后向上回收 }

3、再console.log就会发现出现三个状态,并且箭头消失 这是因为手动调用 loadmore 的 onTopLoaded 事件,在加载数据后需要对组件进行一些重新定位的操作。

第四步:改变刷新时间 实际上刷新时间根据网速什么什么的原因决定,但是自己写的项目需要达到刷新效果的时候可以改变一下刷新时间,以免直接刷新结束,显示不出效果

loadTop() {//下拉刷新后向上回收 setTimeout(() => { this.$refs.loadmore.onTopLoaded(); }, 1000) },

直接将上一步写的loadTop方法加一个定时器即可

第五步:箭头太大无法全部隐藏 注意:给min-loadmore-top设置,不要单独给存放箭头的span标签设置 注意:给min-loadmore-top设置,不要单独给存放箭头的span标签设置

第六步: 将下拉刷新的箭头标志更换成其他图片

<div slot="top" class="mint-loadmore-top" style="text-align:center"> <span v-show="topStatus == 'drop'" :class="{'rotate_drop': topStatus === 'drop'}" //如果状态是下拉则显示下面的图片 > <img class="arrow" src="@/assets/img/arrow_up.jpg" alt=""> </span> <span v-show="topStatus === 'loading'"> <mt-spinner class="spinner" type="fading-circle" //类型 但无法居中,因此需要设置css样式,先设置一个类名spinner v-show="topStatus == 'loading'" //如果状态为loading显示出来 color="#999" //更改颜色 :size="50" //更改尺寸 > </mt-spinner> </span> <span v-show="topStatus == 'pull'" :class="{'rotate_pull': topStatus === 'pull'}" //如果状态是向上回收则显示下面的图片 > <img class="arrow" src="@/assets/img/arrow_down.jpg" alt=""> </span> </div>

第七步:mt-spinner无法居中 先设置一个类名spinner然后设置css样式

.spinner{ width: 100%; display: flex; justify-content: center; }

完整代码如下: html部分

<template> <div id="my"> <mt-loadmore ref="loadmore" :top-method="loadTop" @top-status-change="handleTopChange" > <div slot="top" class="mint-loadmore-top" style="text-align:center"> <span v-show="topStatus == 'drop'" :class="{'rotate_drop': topStatus === 'drop'}" > <img class="arrow" src="@/assets/img/arrow_up.jpg" alt=""> </span> <span v-show="topStatus === 'loading'"> <mt-spinner class="spinner" type="fading-circle" v-show="topStatus == 'loading'" color="#999" :size="50" > </mt-spinner> </span> <span v-show="topStatus == 'pull'" :class="{'rotate_pull': topStatus === 'pull'}" > <img class="arrow" src="@/assets/img/arrow_down.jpg" alt=""> </span> </div> <div> 页面其他内容</div> </mt-loadmore> </div> </template>

css部分

.mint-loadmore{ .mint-loadmore-top{ font-size: 42/@r; color: #999; .spinner{ width: 100%; display: flex; justify-content: center; } .arrow{ width: 38/@r; height: 42/@r; } } }

js部分

data () { return { topStatus: '', } }, methods: { loadTop() {//下拉刷新后向上回收 setTimeout(() => { this.$refs.loadmore.onTopLoaded();// 如果不添加该事件,下拉刷新之后不会向上返回 }, 1000) }, handleTopChange(status) {// 查看下拉刷新状态 this.topStatus = status; console.log(status) } }
最新回复(0)