解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)1. 页⾯在⼿机端不能上下滑动,在PC端浏览器正常滑动
说明:在设置了overflow:auto;属性的前提下,H5页⾯在PC端浏览器⾥展⽰可以上下滑动,在ios上可正常滑动,在安卓⼿机上不能上下滑动;这现象并不是ios和安卓兼容性问题!
原因:设置了touch-action: none;这属性为局部或者全局属性,将这条属性注释即可正常滑动。
2.使⽤PullRefresh和List列表实现下拉刷新和上拉加载时出现的问题
问题1. 下拉刷新时在⼿机上,不论滑到任何位置,只要下拉就刷新
原因:滑动的区间设置错了,此时滑动的区间应是此组件的⽗盒⼦,我将overflow:scroll设置给了最外层盒⼦
问题2. 上拉加载时展⽰的列表始终只包含当前某⼀页,⽽不是当前页和加载出的那⼀页
原因:请求接⼝的参数不应该是current++,也就是不应该是当前页数+1,⽽是始终保持当前页数,请求的size=current*size
问题3. 下拉时,当数据很少的情况下,页⾯的最下⾯部分被遮住
韩安冉整容前
原因:给van-list设置了height,且height: 80%,van-list必须设置⾼,否则⽆法滑动
解决办法:设置最⼩⾼:min-height: calc(100vh - 100px); overflow: hidden;
问题4.上拉加载时出现重复加载问题
van-list的属性finished触发时间错误,如果直接放在@load⽅法中,则会出现⼀直请求加载
我开始美丽的际遇 你来自东和西解决办法:将finished=true放在请求接⼝返回数据的⽅法⾥,当当前页⾯数据⼤于等于返回的总条数,finished=true,显⽰加载完成,不再触发load加载事件。
注:附上下拉刷新、上拉加载部分的代码
<template>
<van-pull-refresh v-model="isLoading" :head-height="20" @refresh="onRefresh">
<van-list
v-model="loading"
:finished="finished"
:offset="1"
:immediate-check="false"
:error.sync="error"
finished-text="已全部加载完成"
error-text="请求失败,点击重新加载"
赵本山照片被当遗像@load="onLoadList"
>
</van-list>
</van-pull-refresh>
</template>
<script>
data(){
return {
isLoading: false,
finished: false,
loading: false,
}
},
methods:{
getVideoList() {
getVideoList(this.current, this.selectDisposeStatus,  this.searchValue).then(resp => {
this.videoList = ds
this.isVideoList = false
if (this.videoList.length >= al) {
this.finished = true
}
}).catch(() => {
< = true
})
会计学属于什么专业类别},
onRefresh() {
this.current = 1
this.isLoading = false
this.$toast('刷新成功')
},
onLoadList() {
this.current++
this.loading = false
this.$toast('加载成功')
},
}
麻雀李小男怎么死的</script>
补充知识:Vant与Element-ui出现Property '$notify' must be of type 'ElNotification'错误
遇到问题:
ERROR in /Users/oyo/projects/dataplatform/coconut/node_modules/vant/types/notify.d.ts 33:5 Subsequent
property declarations must have the same type. Property ‘$notify' must be of type ‘ElNotification', but here has
type ‘Notify'.
原因是两个组件库都在应⽤上添加了 $notify ⽅法;
解决⽅法是:只安装⼀个组件库, 另⼀个组件库按需引⼊
报错⽰例:
npm install vant element-ui
周涛几任丈夫都有谁vant 和 element-ui 都有 $notify ⽅法, 会报错
import Vue from 'vue';
import Vant from 'vant';
import 'vant/lib/index.css';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(Vant);
Vue.use(ElementUI);
解决⽅案:
import Vue from 'vue';
import Vant from 'vant';
import 'vant/lib/index.css';
/
/ 按需引⼊你⽤到的组件, ⽽不是安装整个组件库
import ElButton from 'element-ui/lib/button';
import 'element-ui/lib/theme-chalk/button.css';
Vue.use(Vant);
Vueponent('el-button', ElButton);
tsconfig.json
{
"compilerOptions": {
"paths": {
// 指向正确的声明映射
"element-ui/lib/button": ["node_modules/element-ui/types/button"]
}
}
}
以上这篇解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。