解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)


Posted in Javascript onNovember 11, 2020

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"]
 }
 }
}

以上这篇解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
HTA版JSMin(省略修饰语若干)基于javascript语言编写
Dec 24 Javascript
基于jquery的获取mouse坐标插件的实现代码
Apr 01 Javascript
腾讯UED 漂亮的提示信息效果代码
Sep 12 Javascript
javascript将相对路径转绝对路径示例
Mar 14 Javascript
用unescape反编码得出汉字示例
Apr 24 Javascript
实现JavaScript的组成----BOM和DOM详解
May 18 Javascript
BootStrap的table表头固定tbody滚动的实例代码
Aug 24 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
Mar 24 jQuery
vue 使用Jade模板写html,stylus写css的方法
Feb 23 Javascript
20多个小事例带你重温ES10新特性(小结)
Sep 29 Javascript
vue实现弹幕功能
Oct 25 Javascript
vue的项目如何打包上线
Apr 13 Vue.js
JS前端基于canvas给图片添加水印
Nov 11 #Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
Nov 11 #Javascript
使用Vant完成Dialog弹框案例
Nov 11 #Javascript
vue实现lodop打印功能的示例
Nov 11 #Javascript
解决vant的Toast组件时提示not defined的问题
Nov 11 #Javascript
vue mvvm数据响应实现
Nov 11 #Javascript
Js数组扁平化实现方法代码总汇
Nov 11 #Javascript
You might like
第九节 绑定 [9]
2006/10/09 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
html+js实现动态显示本地时间
2013/09/21 Javascript
使用 Node.js 做 Function Test实现方法
2013/10/25 Javascript
jquery easyui使用心得
2014/07/07 Javascript
js中string转int把String类型转化成int类型
2014/08/13 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
jquery果冻抖动效果实现方法
2015/01/15 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
element-ui组件中input等的change事件中传递自定义参数
2019/05/22 Javascript
js实现数字从零慢慢增加到指定数字示例
2019/11/07 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
javascript实现时间日期的格式化的方法汇总
2020/08/06 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
Python __setattr__、 __getattr__、 __delattr__、__call__用法示例
2015/03/06 Python
python复制文件的方法实例详解
2015/05/22 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
2017/07/04 Python
Python pymongo模块常用操作分析
2018/09/01 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
策划助理岗位职责
2013/11/18 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
单方投资意向书
2015/05/11 职场文书
学术研讨会主持词
2015/07/04 职场文书
Java服务调用RestTemplate与HttpClient的使用详解
2022/06/21 Java/Android