解决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 相关文章推荐
Windows Live的@live.com域名注册漏洞 利用代码
Dec 27 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
Mar 04 Javascript
jquery事件重复绑定的快速解决方法
Jan 03 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
Mar 18 Javascript
JavaScript将字符串转换成字符编码列表的方法
Mar 19 Javascript
javascript单例模式的简单实现方法
Jul 25 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
Feb 05 Javascript
引用jquery框架后出错的解决方法
Aug 09 Javascript
JSON生成Form表单的方法示例
Nov 21 Javascript
vue项目中将element-ui table表格写成组件的实现代码
Jun 12 Javascript
Node爬取大批量文件的方法示例
Jun 28 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
Aug 06 Javascript
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
php过滤html中的其他网站链接的方法(域名白名单功能)
2014/04/24 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
php数据访问之增删改查操作
2016/05/09 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
js中arguments的用法(实例讲解)
2013/11/30 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
原生JS实现跑马灯效果
2017/02/20 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
vue2.0 路由不显示router-view的解决方法
2018/03/06 Javascript
基于ionic实现下拉刷新功能
2018/05/10 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
Python 第一步 hello world
2009/09/25 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
Python中Threading用法详解
2017/12/27 Python
使用apidocJs快速生成在线文档的实例讲解
2018/02/07 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
Python-openCV开运算实例
2020/07/05 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
CSS教程:CSS3圆角属性
2009/04/02 HTML / CSS
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
预备党员转正考核材料
2014/06/03 职场文书
文秘应届生求职信
2014/07/05 职场文书
2014年部门工作总结
2014/11/12 职场文书
2014年村官工作总结
2014/11/24 职场文书
清洁员岗位职责
2015/02/15 职场文书
大学生党员自我评价
2015/03/04 职场文书
2015年国际护士节演讲稿
2015/03/18 职场文书
党纪处分决定书
2015/06/24 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python