使用Vant做移动端对图片预览ImagePreview和List的理解
使用Vant3做移动端的感受
最近在使用Vant3做移动端。
感觉还可以,使用起来也简单,但是也遇见一些坑。
图片预览ImagePreview的使用
在使用图片预览的时候,
我们在main.js中进行了全局注册
import { ImagePreview } from 'vant';
app.use(ImagePreview);
但是在需要使用的页面,无法进行预览
在网上的方法直接跟官网一模一样
赶感觉真的是挺无语的。
后来在我需要使用图片预览我是这样去解决的
<script>
import {ImagePreview} from "vant";
export default defineComponent({
setup() {
// 预览图片
const showSpwierHander=(item)=>{
ImagePreview({
//images的数据结构是 [ 'yoururl','yoururl',]
images: item.images,
//closeable展示关闭的小图标
closeable: true,
});
}
}
})
我对List列表的总结
List列表主要是用于展示长列表,
在页面滑动到底部的时候加载下一页的数据。
在后端出的接口是分页的时候,一定会使用这个组件的。
业务逻辑模板
<div class="scroll-height">
<van-list
v-model:loading="listCont.loading"
:finished="listCont.finished"
:finished-text="listCont.finishedText"
@load="onLoadhader"
>
<div class="module-list" @click="gotoPage" v-for="(item,index) in listCont.pageList" :key="index">
你的内容
</div>
</van-list>
</div>
<!-- 我的js代码 -->
function listScollHooks(){
let listCont=reactive({
pageList:[],
loading: false,
finished: false,
finishedText:'没有更多了',
params:{
pageIndex: 0, //这里要设置为0
pageSize: 10,
}
})
function onLoadhader(){
listCont.params.pageIndex+=1;
listCont.loading=true;// 开启本次的加载状态
postmyAssetPageLookApi('');
}
function postmyAssetPageLookApi(type){
postmyAssetPageLook(listCont.params).then(res=>{
if(res.success&&res.data){
listCont.loading=false;// 本次加载状态结束
// 使用缓存
if( listCont.params.pageIndex==1){
listCont.pageList =res.data
// 提示语,如果搜索后没有数据提示未查询到结果
if(type=='seatch'&&res.data.length==0){
listCont.finishedText='未查询到结果'
}else{
listCont.finishedText='没有更多了'
}
}else{
listCont.pageList =listCont.pageList.concat(res.data);//追加数据
}
// 是否加载完了
if(res.data.length==0 || listCont.pageList.length >= res.totalDatas){ //所有的数据加载完了
listCont.finished=true
if(type!='seatch'){
listCont.finishedText='没有更多了'
}
}else{
listCont.finished=false
}
}else{
listCont.loading=false;// 本次的加载状态结束
listCont.pageList=[]
listCont.finished = true;
}
}).catch(()=>{
listCont.loading=false;// 本次的加载状态结束
listCont.pageList=[]
listCont.finished = true;
})
}
return {listCont,onLoadhader }
}
详细讲解
loading: false,
loading设置为true表示处于加载状态,false表示隐藏加载状态。
所以我们最初会将loading设置为false。
需要注意的是当onLoadhader被触发的时候。
Vant底层会将loading重新设置为true.
所以你在加载的时候不需要将loading设置为true.
我这里写了是为了方便我的理解。
所以最终你只需要将本次请求的结果完成后,
无论成功还是失败重置为false。表示本次请求已经完成了。
finished: false,
finished是否已加载完成,加载完成后不再触发 load 事件
最初我们一定要设置为false.表示我们还没有加载完
当你把所有的数据都加载完了,一定要将finished设置为true。
否者肯定会造成浏览器内存泄漏,这个是非常严重的哈~~
表示已经没有数据可以加载了。
否者滚动的时候回触发 @load="onLoadhader"这个函数
finishedText:'没有更多了',表示=>加载完成后的提示语
@load在页面渲染的时候会自动执行。
所以页码的初始值你需要设置为0
每次滚动到底部的时候,都会执行@load函数
需要注意的地方
有些小伙伴可能会发现有些时候。
@load这个函数在页面渲染后执行了两次
这个是正常的现象,请不要担心。
比如说你的总条数是5条,你每次请求10数据,
那么页面渲染完毕后会执行两次@load
细心的小伙伴可能发现我注释上有缓存。
因为在前进和后退的时候,
这样不会造成页面上有一瞬间的空白。
优先使用上一次的数据,等接口返回后及时刷新
这个就是我对List组件的理解
使用Vant做移动端对图片预览ImagePreview和List的理解的更多相关文章
- HTML5浏览器端图片预览&生成Base64
本文主要介绍如何通过拖拽方式在浏览器端实现图片预览,并生成图片的Base64编码. 工具链接:图片转Base64. 首先介绍一下FileReader, FileReader对象允许浏览器使用File或 ...
- js实现移动端图片预览:手势缩放, 手势拖动,双击放大...
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...
- 移动端 H5 拍照 从手机选择图片,移动端预览,图片压缩,图片预览,再上传服务器
前言:最近公司的项目在做全网营销,要做非微信浏览器的wap 站 的改版,其中涉及到的一点技术就是采用H5 选择手机相册中的图片,或者拍照,再将获取的图片进行压缩之后上传. 这个功能模块主要有这5点比较 ...
- Vue PC端图片预览插件
*手上的项目刚刚搞完了,记录一下项目中遇到的问题,留做笔记: 需求: 在项目中,需要展示用户上传的一些图片,我从后台接口拿到图片url后放在页面上展示,因为被图片我设置了宽度限制(150px),所以图 ...
- 记一次IE浏览器做图片预览的坑
随便写写吧,被坑死了 IE 10 及 IE10以上,可以使用FileReader的方式,来做图片预览,加载本地图片显示 IE 9 8 7 没有FileReader这个对象,所以只能使用微软自己的东西来 ...
- jQuery PC端图片预览,鼠标移上去查看大图
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 适用于各浏览器支持图片预览,无刷新异步上传js插件
文件上传无疑是web应用中一个非常常用的功能,不管是PHP.jsp还是aspx.mvc等都会需要文件上传,但是众所周知当使用自带的文件上传功能时总会出现页面刷新的情况.当然现在有了html5这个好东西 ...
- JS魔法堂之实战:纯前端的图片预览
一.前言 图片上传是一个普通不过的功能,而图片预览就是就是上传功能中必不可少的子功能了.在这之前,我曾经通过订阅input[type=file]元素的onchange事件,一旦更改路径则将图片上传至服 ...
- dropzonejs中文翻译手册 DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.
http://wxb.github.io/dropzonejs.com.zh-CN/dropzonezh-CN/ 由于项目需要,完成一个web的图片拖拽上传,也就顺便学习和了解了一下前端的比较新的技术 ...
- win7中资源管理器不能显示图片预览的解决方法
在用xp的时候,在资源管理器里面预览图片文件是在普通不过的事情了.换到win7之后,图片文件一直不能预览,只是显示图标还挺烦的.肯定是哪里设置的不对,下午闲来无事,找到是哪里的问题了. 如果你也遇到相 ...
随机推荐
- importlib 用法
首先看一下importlib.import_module(name, package=None)函数的参数 函数调用存在两种方式: 1.绝对导入,name为完整路径str,package为None. ...
- golang之常用第三方包汇总
汇总golang日常开发中常用的库包 [web] gin: github.com/gin-gonic/gin [MySQL] gorm: [Redis] go-redis: github.com/ ...
- CudaSPONGE之Python接口
技术背景 在上一篇博客中我们介绍了CudaSPONGE的基本安装和使用方法.为了性能考虑,CudaSPONGE是基于纯CUDA C开发的,但是现在很多轮子都是Python开发的.为兼容更多的框架和平台 ...
- ORCA避障源码笔记
参考资料 https://gamma.cs.unc.edu/ORCA/publications/ORCA.pdf https://gamma.cs.unc.edu/RVO2/ 数学知识 1.向量的点乘 ...
- uni-app项目uview的表单验证在小程序上不生效
前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验非常棒,公司项目就是主推uni-app,在uniapp生态中u ...
- Postman无法启动
前情 最近在捣鼓node.js,需要一个接口测试工具,而Postman是业界有名的接口测试工具,自然接口测试就用它了. 坑 已经有一段时间没启动Postman了,突然发现启动一直卡在修复界面,重启也不 ...
- 鸿蒙UI布局实战 —— 个人中心页面开发
1.前言 接下里我们将开启"鸿蒙UI布局系列"的学习,第一站:学习线性布局(Row/Column)+ 弹性布局(Flex) 在展开学习前,先上一个实战demo--开发一个个人中心页 ...
- Flutter (2.5) - A splash screen was provided to Flutter, but this is deprecated
Flutter (2.5) - A splash screen was provided to Flutter, but this is deprecated 升级到Flutter 2.5 版本后,启 ...
- 在 Windows 上运行 Podman: 操作指南
在 Windows 上运行 Podman: 操作指南 https://www.redhat.com/sysadmin/run-podman-windows 2021 年 9 月的时候,我写过一篇关于如 ...
- 在 ASP.NET Core 中进行打包 (Bundling) 和紧缩 (Minification)
在 ASP.NET Core 中进行打包 (Bundling) 和紧缩 (Minification) Bundler & Minifier for Visual Studio 2019 Bun ...