使用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之后,图片文件一直不能预览,只是显示图标还挺烦的.肯定是哪里设置的不对,下午闲来无事,找到是哪里的问题了. 如果你也遇到相 ...
随机推荐
- .NET Core 特性(Attribute)底层原理浅谈
简介 烂大街的资料不再赘述,简单来说就是给代码看的注释 Attribute的使用场景 Attribute不仅仅局限于C#中,在整个.NET框架中都提供了非常大的拓展点,任何地方都有Attribute的 ...
- Java注解annotation用法和自定义注解处理器
前言: 在J2EE中,注解使得开发更加便利,省去了生成XML文件的过程,在Hibernate实体声明中,可以简简单单的用几个注解就可以免去生成一个XML的文件操作.这里就主要论述一下annotatio ...
- java 子类继承父类 -- 重写、覆盖
class Foo { public int a; public static final String str = "foo"; public Foo() { a = 3; } ...
- 九、FreeRTOS学习笔记-列表和列表项
列表和列表项的简介 列表是 FreeRTOS 中的一个数据结构,概念上和链表有点类似,列表被用来跟踪 FreeRTOS中的任务. 列表项就是存放在列表中的项目 列表相当于链表,列表项相当于节点,Fre ...
- php之Opcache深入理解
PHP项目中,尤其是在高并发大流量的场景中,如何提升PHP的响应时间,是一项十分重要的工作.而Opcache又是优化PHP性能不可缺失的组件,尤其是应用了PHP框架的项目中,作用更是明显. 1. 概述 ...
- elementUI中的级联选择器,默认赋值不起作用
今天遇到再使用element的级联选择器功能的时候,是多选,默认赋值不起作用. 后来查到是因为少了multiple属性,但是multiple属性要放在props绑定的对象中,而不是直接放在标签上 &l ...
- SpringBoot+logback 日志打印脱敏,正常获取对象不受影响
添加依赖 注意:springboot版本2.7.0 <dependency> <groupId>org.slf4j</groupId> <artifactId ...
- 一图一知-强大的js数组
平时在开发中,数组基本是每天都会用到的数据结构,通过ES6的更新,数组更是越发强大,特此记录数组那些有用而强大的api.
- 【Vue】Vue脚手架安装搭建
## Vue脚手架安装搭建 操作系统:Windows 11 专业工作站 记录时间:2022年2月18日 在安装之前,需要安装node.js(Node.js (nodejs.org)),否则无法使用np ...
- 【杂谈】Kafka 消息偏移量:如何高效地定位和管理消息?
前言 在 Kafka 中,消息偏移量是什么?是文件中的索引吗?又是如何通过偏移量快速定位消息的?本文将深入探讨这些问题,帮助你更好地理解 Kafka 的偏移量机制. Kafka 的偏移量是什么? Ka ...