Vue移動(dòng)端下拉刷新組件的使用教程
學(xué)習(xí)關(guān)鍵語(yǔ)句:
vant list組件和下拉刷新
vant 下拉刷新和局部滾動(dòng)沖突
寫在前面
每一次 ! 我是說每一次我在使用 vant 組件庫(kù)里面 list組件和下拉刷新連在一起用的時(shí)候
都會(huì)出現(xiàn)下拉刷新和列表下滑局部滾動(dòng)的沖突 !
這讓我很 ! 難 ! 受 !
這篇文章提供 來自于瀏覽精彩的互聯(lián)網(wǎng)并通過我實(shí)際使用得來的體驗(yàn) 給出 2 個(gè)解決方法 , 雖然說我還看到有人給的解決方法是 overflow 加給父級(jí) , 我就覺得挺迷的 , 不曉得是怎么一回事
開始
第一種方法應(yīng)該是很方便的一種了 , 就是修改源碼樣式了 , 你可以將以下代碼加入到你的 css 中 , 注意 , 如果你使用的是局部 css , 請(qǐng)使用穿透或者新開一個(gè)全局 style
.van-pull-refresh { height: calc(100vh - 100px) !important; // 此處的 100px 需要根據(jù)你的實(shí)際情況來處理 , 是頁(yè)面中不包含列表的高度部分 overflow: auto !important; }
但是有時(shí)候會(huì)出現(xiàn)第一種方法不起作用的情況 , 遇到這種情況 , 我也只能推薦你使用原生方法 scroll 來判斷是否需要進(jìn)行下拉刷新了
第二種就是即時(shí)判斷是否需要下拉刷新了
這種方法的原理就是 當(dāng)列表的 scrollTop 為 0 時(shí) , 說明列表已經(jīng)到頂了 , 到頂了還往下拉說明你就是想要刷新列表 , 如果 scrollTop 不等于 0 那就是列表向下滑動(dòng)而已
我們看下使用組件時(shí)需要的屬性
<van-pull-refresh v-model="refreshing" // 表示是否在刷新 , 下拉時(shí)自動(dòng)變?yōu)?true ,需要在請(qǐng)求數(shù)據(jù)結(jié)束后手動(dòng)設(shè)置為 false @refresh="onRefresh" // 下拉刷新觸發(fā)的方法 , 將分頁(yè)變?yōu)?1 然后請(qǐng)求數(shù)據(jù) :disabled="pullRefreshDisabled" // 是否禁用下拉刷新的方法 , 禁用后將無法下拉刷新 , 通過列表滾動(dòng)高度來控制這個(gè)值 > <van-list v-model:loading="loading" // 是否處于加載狀態(tài) , 列表滑到最底處時(shí)自動(dòng)變成 true , 變?yōu)?true 時(shí)不會(huì)觸發(fā) load 事件方法 :finished="finished" // 是否已經(jīng)加載完成 finished-text="沒有更多了" @load="onLoad" // 加載新數(shù)據(jù)的方法 , 移動(dòng)端一般傳入新的頁(yè)數(shù)將新數(shù)據(jù)數(shù)組添加到原有數(shù)據(jù)數(shù)組之后 @scroll="divScroll" // 滾動(dòng)時(shí)觸發(fā)的事件 , 來判斷當(dāng)前滾動(dòng)的高度是多少 > <div v-for="(item, index) in data" :key="index"> {{ item }} </div> </van-list> </van-pull-refresh>
如果都看了上面的注釋 , 那么其實(shí)也很簡(jiǎn)單了 , 我們?cè)?divScroll 方法中實(shí)時(shí)監(jiān)控滾動(dòng)的高度 , 當(dāng)滾動(dòng)的高度 == 0 的時(shí)候 , 就給下拉刷新組件可以下拉刷新的功能
const pullRefreshDisabled = ref(false) const divScroll = (e: any) => { if (e.target.scrollTop == 0) { pullRefreshDisabled.value = false } else { pullRefreshDisabled.value = true } }
用了這么長(zhǎng)時(shí)間 , 我越發(fā)覺得一個(gè) any 走天下了
初始值設(shè)置為 false 是為了一開始就能下拉刷新 , 千萬別搞混 , 這個(gè) pullRefreshDisabled 為 true 時(shí)是不能下拉刷新 , 為 false 時(shí)是可以下拉刷新
結(jié)束
emmm我以前挺抗拒使用判斷滾動(dòng)來寫這個(gè) , 但是當(dāng)我真的寫了之后 , 我直呼 真香 !
到此這篇關(guān)于Vue移動(dòng)端下拉刷新組件的使用教程的文章就介紹到這了,更多相關(guān)Vue下拉刷新組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue?批量自動(dòng)引入并注冊(cè)組件或路由實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了vue?批量自動(dòng)引入并注冊(cè)組件或路由實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07關(guān)于Vue.js一些問題和思考學(xué)習(xí)筆記(1)
這篇文章主要為大家分享了關(guān)于Vue.js一些問題和思考的學(xué)習(xí)筆記,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12使用vue打包時(shí)vendor文件過大或者是app.js文件很大的問題
這篇文章主要介紹了使用vue打包時(shí)vendor文件過大或者是app.js文件很大問題的解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06vue純前端實(shí)現(xiàn)將頁(yè)面導(dǎo)出為pdf和word文件
這篇文章主要為大家詳細(xì)介紹了vue如何通過純前端實(shí)現(xiàn)將頁(yè)面導(dǎo)出為pdf和word文件,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下2024-01-01ElementUI中el-form組件的rules參數(shù)舉例詳解
Form組件提供了表單驗(yàn)證的功能,只需要通過rules屬性傳入約定的驗(yàn)證規(guī)則,并將Form-Item的prop屬性設(shè)置為需校驗(yàn)的字段名即可,下面這篇文章主要給大家介紹了關(guān)于ElementUI中el-form組件的rules參數(shù)的相關(guān)資料,需要的朋友可以參考下2023-10-10Vue3+NodeJS+Soket.io實(shí)現(xiàn)實(shí)時(shí)聊天的示例代碼
本文主要介紹了Vue3+NodeJS+Soket.io實(shí)現(xiàn)實(shí)時(shí)聊天的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01Vue實(shí)現(xiàn)移除數(shù)組中特定元素的方法小結(jié)
這篇文章主要介紹了Vue如何優(yōu)雅地移除數(shù)組中的特定元素,文中介紹了單個(gè)去除和批量去除的操作方法,并通過代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-03-03