vant3中使用List組件的一些坑
使用vant3 List 組件過程中遇到的一些坑
1、接口錯誤的時候,大量重復(fù)請求。
可能接口錯誤時vant3內(nèi)部某些變量沒重置,導致一直重復(fù)請求,解決方法是接口返回不成功finished設(shè)置成true
2、沒有發(fā)起請求
<van-list ? ? v-model:loading="loading" ? ? :finished="finished" ? ? finished-text="沒有更多了" ? ? @load="getData" ? ? offset="50" ? ? v-if="!list || (list && list.length)" ?> ? ? ?<item v-for="info in list" :key="info.id" :info="info" /> ?</van-list> ? <script setup> function getData(){ ? ? if(loading.value || finished.value){ ? ? ? ? return ? ? } ? ? // 接口請求.... } </script>
有人可能跟我一樣,習慣在數(shù)據(jù)請求方法中判斷l(xiāng)oading, vant 內(nèi)部會對loading進行賦值,導致在調(diào)用方法前,loading為true,導致發(fā)不起請求。
處理vant list使用報錯的點
1、使用vant-list在滾動條觸底的時候,沒有觸發(fā)onLoad事件
- 可能是因為在van-list父元素的地方設(shè)置了父元素高度為100%,這里不能這樣設(shè)置,
- 還有就是可能對需要遍歷的數(shù)據(jù),在每一次觸底時,都進行了初始化
2、有時候在tab標簽切換后,滾動條不再觸發(fā)onLoad事件
解決方法是,在切換標簽函數(shù)后,加上
this.loading=true this.finished =false
3、下拉刷新時,數(shù)據(jù)一直在加載中,
這是因為少寫了,this.refreshing = false;
vant組件中,把這條語句寫在onLoad()函數(shù)中,通過onRefresh()函數(shù)調(diào)用onLoad()時完成語句的實現(xiàn),
但是有時候沒有寫在onLoad()函數(shù)中,是需要我們自己添加在onRefresh()函數(shù)里。
4、還有就是在我們剛進入頁面時,就觸發(fā)了一次onLoad事件,第二頁的數(shù)據(jù)也顯示出來了,
我的原因是,在進入頁面時,我在created中也調(diào)用了一次求遍歷數(shù)據(jù)的值,所以我進入時,相當于created調(diào)用了一次,在onLoad中又調(diào)用了一次。數(shù)據(jù)就加載顯現(xiàn)到了第二頁。
對于其各個api的理解
<van-pull-refresh v-model=“refreshing” @refresh=“onRefresh”> <van-list v-model=“l(fā)oading” :finished=“finished” finished-text=“沒有更多了” @load=“onLoad” :offset=“10” :error.sync=“error” error-text=“請求失敗請重新加載” >
@refresh = “onRefresh”
定義的是當列表下拉時,(其實可以理解為鼠標點擊并下拉,然后松開的的事件),這個就是對數(shù)據(jù)進行刷新,回到?jīng)]有觸發(fā)onLoad()函數(shù)之前@load=“onLoad”
定義的是當滾動條滾動到底部時,觸發(fā)onLoad事件loading
,finished
,error
,他們都是布爾值loading
是用來表示加載狀態(tài)的finished
表示數(shù)據(jù)加載完,顯示finished-text文字error
表示當數(shù)據(jù)加載失敗時,顯示error-text文字offset
代表當滾動條距離底部小于該數(shù)值時,觸發(fā)onLoad事件
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。