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

做微信小程序网站国内做网站的公司

做微信小程序网站,国内做网站的公司,北京投资公司,小众但惊艳的公司名称当使用 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/138168.html

相关文章:

  • 网站价格全网营销推广公司
  • 网站title标签内容怎么设置南京seo网站管理
  • 吉林省人民政府门户网站首页关键词排名
  • 适合写论文的中小企业名录佛山抖音seo
  • 怎么做扫二维码登陆网站今天的新闻发布会
  • 深圳网站制作易捷网络2023年6月疫情情况
  • 知名网站建设公司社交媒体推广
  • 黔东南州两学一做教育网站怎么让自己上百度
  • 域名网站平台关键词竞价排名是什么意思
  • 建设生鲜网站价格建设网站制作公司
  • 网站建设uuiopseo优化师是什么
  • html好看的网站博客网站注册
  • 哪些平台可以推广产品网站seo在线诊断
  • 绵阳网站开发百度快照推广是什么意思
  • 营销型网站有意义吗向日葵seo
  • 沈阳网页设计排名seo公司哪家好
  • 网站建设价格济南百度写作助手
  • 网网站制作优化关键词的方法包括
  • 黄岛王台有做网站的吗seo独立站优化
  • 七台河新闻联播2021seo推广有哪些
  • 微营销平台系统网站推广及seo方案
  • 企业网站建设费在会计上seo整体优化
  • 建设部网站材料价格上涨规定淘宝推广方式
  • 设计通网站建设市场推广方案怎么写
  • 中山 网站建设一条龙全包企业软文代写
  • 枣阳建设局网站首页网站页面seo
  • 品牌型网站制作价格网站开发公司
  • 网站服务器备案查询网站备案谷歌应用商店app下载
  • 建设工程造价员网站网站运营及推广方案
  • 北京做视觉网站3分钟搞定网站seo优化外链建设