使用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的理解的更多相关文章

  1. HTML5浏览器端图片预览&生成Base64

    本文主要介绍如何通过拖拽方式在浏览器端实现图片预览,并生成图片的Base64编码. 工具链接:图片转Base64. 首先介绍一下FileReader, FileReader对象允许浏览器使用File或 ...

  2. js实现移动端图片预览:手势缩放, 手势拖动,双击放大...

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...

  3. 移动端 H5 拍照 从手机选择图片,移动端预览,图片压缩,图片预览,再上传服务器

    前言:最近公司的项目在做全网营销,要做非微信浏览器的wap 站 的改版,其中涉及到的一点技术就是采用H5 选择手机相册中的图片,或者拍照,再将获取的图片进行压缩之后上传. 这个功能模块主要有这5点比较 ...

  4. Vue PC端图片预览插件

    *手上的项目刚刚搞完了,记录一下项目中遇到的问题,留做笔记: 需求: 在项目中,需要展示用户上传的一些图片,我从后台接口拿到图片url后放在页面上展示,因为被图片我设置了宽度限制(150px),所以图 ...

  5. 记一次IE浏览器做图片预览的坑

    随便写写吧,被坑死了 IE 10 及 IE10以上,可以使用FileReader的方式,来做图片预览,加载本地图片显示 IE 9 8 7 没有FileReader这个对象,所以只能使用微软自己的东西来 ...

  6. jQuery PC端图片预览,鼠标移上去查看大图

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 适用于各浏览器支持图片预览,无刷新异步上传js插件

    文件上传无疑是web应用中一个非常常用的功能,不管是PHP.jsp还是aspx.mvc等都会需要文件上传,但是众所周知当使用自带的文件上传功能时总会出现页面刷新的情况.当然现在有了html5这个好东西 ...

  8. JS魔法堂之实战:纯前端的图片预览

    一.前言 图片上传是一个普通不过的功能,而图片预览就是就是上传功能中必不可少的子功能了.在这之前,我曾经通过订阅input[type=file]元素的onchange事件,一旦更改路径则将图片上传至服 ...

  9. dropzonejs中文翻译手册 DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.

    http://wxb.github.io/dropzonejs.com.zh-CN/dropzonezh-CN/ 由于项目需要,完成一个web的图片拖拽上传,也就顺便学习和了解了一下前端的比较新的技术 ...

  10. win7中资源管理器不能显示图片预览的解决方法

    在用xp的时候,在资源管理器里面预览图片文件是在普通不过的事情了.换到win7之后,图片文件一直不能预览,只是显示图标还挺烦的.肯定是哪里设置的不对,下午闲来无事,找到是哪里的问题了. 如果你也遇到相 ...

随机推荐

  1. csv导出特殊字符问题

    昨天听到隔壁组讨论说按照逗号分割implode导出到csv文件,传递文件数据给别人的时候,别人按照都好explode分割回来多一个单元格,他们调查了一下发现是内容里面就是有逗号导致的,居然就这么卡住了 ...

  2. 鸿蒙NEXT开发案例:数字转中文大小写

    [引言] 本应用的主要功能是将用户输入的数字转换为中文的小写.大写及大写金额形式.用户可以在输入框中输入任意数字,点击"示例"按钮可以快速填充预设的数字,点击"清空&qu ...

  3. 教育账号无法登录OneDrive的一种解决方法

    众所周知,微软的服务总是能出现一些奇奇怪怪的问题,比如说教育账号无法登录OneDrive,尝试使用网上的临时解决方案失败 onedrive学生账号无法登录win10 OneDrive客户端 用户可以在 ...

  4. 深入Log4J源码之Log4J Core

    毕业又赶上本科的同学会,还去骑车环了趟崇明岛,六月貌似就没消停过,不过终于这些事情基本上都结束了,我也可以好好的看些书.读些源码.写点博客了. Log4J将写日志功能抽象成七个核心类/接口:Logge ...

  5. Java 并发编程实战学习笔记——寻找可强化的并行性

    寻找可强化的并行性 1.串行执行所有任务 代码 复制 - 运行 package net.jcip.examples; import java.util.*; /** * SingleThreadRen ...

  6. MySQL底层概述—9.ACID与事务

    大纲 1.ACID之原子性 2.ACID之持久性 3.ACID之隔离性 4.ACID之一致性 5.ACID的关系 6.事务控制演进之排队 7.事务控制演进之排它锁 8.事务控制演进之读写锁 9.事务控 ...

  7. 3D饼图

    1.实现思路 Echarts本身没有这类图形,可以使用其扩展echarts-gl进行绘制,echarts-gl曲面图可以完成这类需求 <script src="https://cdn. ...

  8. 张高兴的 Raspberry Pi AI 开发指南:(三)将自定义模型编译为 Hailo NPU 的 .hef 模型

    目录 Python 环境配置 转换 量化 编译 参考 在上一篇博客中,探讨了如何使用 Python 和 hailo_model_zoo 中预编译的模型来实现目标检测.本篇博客将深入介绍如何将用户自定义 ...

  9. oracle客户端安装先决条件检查出现PRVF-7531错误

    场景:在局域网内,远程一台客户机进行客户端安装 度娘后,说一般情况下,由于操作系统未开启默认共享,导致Oracle无法检查环境的可用性. 查看server服务正常开启. 通过net share将c进行 ...

  10. webpack-dev-server配置https

    前情 最近在做一个浏览器通知的交互需求,但是查阅官方文挡,浏览器通知需要在https环境下才能工作,于是就研究怎么在开发环境下配置一个https服务器 STEP1 安装Chocolatey Choco ...