解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
作者:zlinger1 发布时间:2024-05-13 09:44:31
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 = resp.data.records
this.isVideoList = false
if (this.videoList.length >= resp.data.total) {
this.finished = true
}
}).catch(() => {
this.error = true
})
},
onRefresh() {
this.current = 1
this.getVideoList()
this.isLoading = false
this.$toast('刷新成功')
},
onLoadList() {
this.current++
this.loading = false
this.getVideoList()
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);
Vue.component('el-button', ElButton);
tsconfig.json
{
"compilerOptions": {
"paths": {
// 指向正确的声明映射
"element-ui/lib/button": ["node_modules/element-ui/types/button"]
}
}
}
来源:https://blog.csdn.net/weixin_41175327/article/details/103870210


猜你喜欢
- 在工作中,作为一名开发者的你,也许偶尔需要从事维护数据库的工作。下面我们来介绍一下两个SQL服务器的维护技巧:轻松改变数据库拥有者、整理索引
- 大家可能都不大熟悉关于pdb这个模块,实际上就是python中的内置模块,主要作用于命令行调试代码,下面我们将通过是哪个小结给大家详细介绍下
- 昨天按照手册教程,动手写一个Auth扩展,按照包独立性的原则,我不希望将Auth::extend()这种方法写在 start.php 中,毫
- 1.1 什么是Mysql多实例?简单的说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(如 : 3306/3307/3308
- 前言登录跳转:不同的用户在登录成功之后跳转到不同的网页当中例如:网站管理员登录成功后跳转到网站后台,vip用户登录成功后跳转到vip页面准备
- 在SQL Server中,TempDB主要负责供下述三类情况使用:内部使用(排序、hash join、
- 哈喽,今天给大家分享一篇Django+Celery实现动态配置定时任务,因为最近也是无意间看到一位大佬关于这块的文章,然后自己觉得不错,也想
- 1.简介:facenet 是基于 TensorFlow 的人脸识别开源库,有兴趣的同学可以扒扒源代码:https://github.com/
- varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大
- 这个类主要解决在类型转换时,如果直接使用类型转换函数,会因为变量为空或者格式不对而导致程序报错,而这种报错在大多数情况下是允许的.例如要转换
- 如题,我有一个模板,我想根据需求复制模板中间的某一页多次,比如复制第五页,然后复制3次,那么第六页,第七页,第八页都是和第五页一模一样的pp
- 本文实例讲述了Python实现曲线拟合操作。分享给大家供大家参考,具体如下:这两天学习了用python来拟合曲线。一、环境配置本人比较比较懒
- 一、模块TypeScript 与ECMAScript 2015 一样,任何包含顶级 import 或
- 选择最实用来谈一下首先,你要慎重选择你就业的城市。这点是目前多数人都忽略的重要因素。无论你的设计思路和发展方向都要依托你所在城市来作为载体。
- 一、异常处理在程序开发中如果遇到一些 不可预知的错误 或 你懒得做一些判断 时,可以选择用异常处理来做。import requestswhi
- 我们都知道,matlab是一个非常好用的矩阵计算分析软件,然额,matlab自带的绘图效果极为锯齿,所以,这里分享一个在python中读取m
- SQL Server通常都运行在多处理器的服务器上,这一点在现在尤为普遍。原因是多内核的处理器越来越普及。那么,在多处理器环境下,Windo
- 引言JavaScript 的 switch 有四样写法,你知道么?不管你知道不知道,反正我是不知道。我所知道的 JavaScript 的 s
- worker pool简介worker pool其实就是线程池thread pool。对于go来说,直接使用的是goroutine而非线程,
- 在进行excel文件读取的时候,我自己设置了部分直接从公式获取单元格的值但是用之前的读取方法进行读取的时候,返回值为空import osim