当前位置: 首页 > wzjs >正文

营销型网站建设优势快手小程序

营销型网站建设优势,快手小程序,在线阅读小说网站怎么做,wordpress大主题上传当使用 Vant 的上传组件时,你可能会遇到以下情况: 选择图片后立即显示本地预览图(正确) 上传到服务器并等待接口返回 接口返回后图片会"闪动"一下再显示 这种闪动现象通常是由于 Vant 上传组件的工作机制导致的。 …

当使用 Vant 的上传组件时,你可能会遇到以下情况:

  1. 选择图片后立即显示本地预览图(正确)

  2. 上传到服务器并等待接口返回

  3. 接口返回后图片会"闪动"一下再显示

这种闪动现象通常是由于 Vant 上传组件的工作机制导致的。

根本原因

  1. 双阶段渲染

    • 第一阶段:选择文件后立即使用 URL.createObjectURL() 创建本地预览

    • 第二阶段:上传完成后用服务器返回的 URL 替换本地预览

  2. URL 替换

    • 本地预览的 Blob URL 和服务器返回的 HTTP URL 不同

    • 替换时浏览器需要重新加载图片

  3. Vant 默认行为

    • 上传过程中会显示上传状态

    • 上传完成后会更新文件列表

解决方案

方案1:保持使用本地预览(不替换URL)

<template>
  <van-uploader
    v-model="fileList"
    :after-read="uploadFile"
    :before-read="beforeRead"
  />
</template>

<script setup>
import { ref } from 'vue';

const fileList = ref([]);

const uploadFile = (file) => {
  // 保持使用本地预览,不上传
  file.status = 'done';
  file.message = '上传成功';
  
  // 如果需要上传到服务器但不替换图片:
  // uploadToServer(file.file).then(res => {
  //   // 不更新URL,保持本地预览
  //   file.status = 'done';
  // });
};
</script>

方案2:优化上传流程避免闪动

vue

复制

<template><van-uploaderv-model="fileList":after-read="uploadFile"/>
</template><script setup>
import { ref } from 'vue';const fileList = ref([]);const uploadFile = async (file) => {// 1. 立即显示为完成状态file.status = 'done';// 2. 静默上传(不显示上传状态)try {const serverUrl = await uploadToServer(file.file);// 3. 直接更新URL而不改变状态file.url = serverUrl;} catch (error) {// 上传失败时显示错误状态file.status = 'failed';file.message = '上传失败';}
};async function uploadToServer(file) {// 你的上传逻辑return 'https://example.com/new-image-url.jpg';
}
</script>

方案3:自定义预览逻辑(推荐)

vue

复制

<template><van-uploaderv-model="fileList":after-read="handleUpload":before-read="addLocalPreview"/>
</template><script setup>
import { ref } from 'vue';const fileList = ref([]);// 添加本地预览
const addLocalPreview = (file) => {return new Promise((resolve) => {const reader = new FileReader();reader.onload = (event) => {file.url = event.target.result; // 使用Base64而不是Blob URLresolve(true);};reader.readAsDataURL(file.file);});
};// 上传处理
const handleUpload = async (file) => {file.status = 'uploading';try {const serverUrl = await uploadToServer(file.file);// 保持相同的URL格式(Base64 -> HTTP)file.url = serverUrl;file.status = 'done';} catch (error) {file.status = 'failed';file.message = '上传失败';}
};
</script>
http://www.dtcms.com/wzjs/615407.html

相关文章:

  • 网站内部链接的策略有郑州网站优化
  • 网站内容怎么编辑天眼查询
  • 国外做电商网站有哪些淄博亿泰信息技术有限公司
  • 鹤壁做网站哪家便宜电子商务这个专业好吗
  • 做网站怎样申请域名网站开发工作内容
  • 什么网站收录排名最高服务定制网站
  • 怎么做网站的关键词库环保科技东莞网站建设
  • 新网网站登录不上你做的网站可视区域多少钱
  • 网站建设logo设计门户网站如何做推广
  • 开一个做网站的工作室网站建设的基础资料
  • 咨询行业网站建设公司wordpress播放网盘视频播放
  • 做技术开发的网站建设网站费用
  • 网站备案是自己可以做吗html5网站首页代码
  • 宽屏蓝色企业网站源码江西网站建设网络公司
  • cvv钓鱼网站怎么做怎么找企业做网站
  • 筋郑州做网站西安凡高网络
  • wordpress手机怎么使用家具类网站如何优化
  • 江苏网站建设怎么样织梦能做视频网站吗
  • 无限弹窗网站链接怎么做建设公司网站编号
  • 企业网站的可信度建设包括自己给自己网站做seo
  • 企业网站seo优化服务商什么网站可以做音乐相册
  • 做网站范本第一个做网站的是谁
  • 哪个网站可以兼职做家教网站开发课程设计参考文献
  • 有哪些免费网站可以做店招免费公益主机
  • 请人建网站需要多少钱许昌北京网站建设
  • 有没有那个的网站清远市最新消息
  • 北京网站优化什么价格wordpress如何添加注册登录界面
  • 朋友用我的vps做网站个人博客模板wordpress
  • 郑州量站站软件开发有限公司网站推广优化价格
  • 京东快递 网站建设特点263企业邮箱官方入口