Vue2.0+Vant图片预览(ImagePreview)无法显示照片

文章讲述了在Vue项目中使用vant2时遇到的问题,即图片无法正常显示。问题源于vant的安装版本,解决方法是通过特定命令(npminstallvant@latest-v2--legacy-peer-deps)重新安装,之后重启服务器,问题得到解决。在代码示例中,还展示了如何引入和使用vant的ImagePreview组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.安装

通过 npm  安装vant2 的版本命令:cnpm i vant@latest-v2 -Snpm i vant@latest-v2 -S

2.应用代码

在全局(App.vue)中需要引入和注册全局组件:如下代码

import Vue from 'vue';

import Vant from 'vant';

import 'vant/lib/index.css';

Vue.use(Vant);

template:
        <!-- 剧照swiper组件 -->
      <detail-swiper :perview="2" name="photos">
        <detail-swiper-item v-for="(data,index) in detailObj.photos" :key="index">
          <div class="avatar" :style="{backgroundImage:'url('+data+')'}"                         
           @click="handlePreview(detailObj.photos,index)"></div>
        </detail-swiper-item>
      </detail-swiper>

<script>
//引入vue
import Vue from 'vue'
// 函数调用法
import { ImagePreview } from 'vant';
export default{
    return{
      detailObj:null,
    }
    methods:{
         handlePreview(photos,index){
            ImagePreview({
              images: photos, //照片数组
              startPosition: index, //照片开始位置
              closeable: true, // 关闭按钮
              closeIconPosition:'top-left'   //关闭按钮的位置
      });
    }

    }
    created(){
    // axios 通过id 可以请求后台数据
    http().then(res=>{
        this.detailObj = res.data.data.film
      })
  }
}
}
</script>

3.图片无法正常显示,其余功能正常;报错如下信息;

 

 4.原因分析

原因:vant安装版本问题;现在默认安装的是peerDependencies。

 

5.解决方案

通过下面命令重新安装vant(2),

npm i vant@latest-v2 --legacy-peer-deps;

重新安装后package.json中vant版本配置会变化如下

 6.重启服务器,重新刷新页面,问题解决

### 关于 Vue2Vant 组合用于移动端开发 #### 使用 Vue2Vant 进行移动端开发的概述 Vue2 是一个渐进式的 JavaScript 框架,适用于构建用户界面。Vant 则是一套轻量、可靠的移动端 UI 组件库[^1]。 #### 创建基于 Vue2 的移动应用项目结构 为了创建一个新的 Vue2 项目并集成 Vant 库,可以按照如下方法操作: ```bash vue create my-project-name cd my-project-name npm install vant@latest --save ``` 安装完成后,在 `main.js` 文件中引入 Vant 并注册全局组件: ```javascript import { Button } from 'vant'; import 'vant/lib/index.css'; Vue.use(Button); ``` 这样就可以在整个应用程序中使用 Vant 提供的各种按钮样式和其他功能了。 #### 实现图片预览效果的最佳实践 对于实现类似于 ImagePreview 功能的需求,可以通过两种方式来绑定旋转事件处理函数给图片元素:一种是通过 v-on 指令直接定义;另一种则是利用自定义指令的方式更加灵活地控制行为逻辑[^2]。 #### 示例代码展示如何设置图片预览插件支持手势交互特性 下面是一个简单的例子说明怎样配置 image-preview 插件使其能够响应触摸屏上的滑动手势从而改变显示角度: ```html <template> <div class="example"> <!-- 预览入口 --> <van-image :src="imageSrc" @click="showImagePreview"/> <!-- 图片预览层 --> <van-image-preview v-model="isShow" :images="[imageSrc]" @change="handleChange" closeable> <template #default> <button type="button" @click.stop.prevent="rotateImage">Rotate</button> </template> </van-image-preview> </div> </template> <script lang="ts"> export default { data() { return { isShow: false, rotationDegree: 0, imageSrc: '/path/to/image.jpg' }; }, methods: { showImagePreview(){ this.isShow = true; }, handleChange(index){ console.log(`current index:${index}`); }, rotateImage(event:Event){ event.stopPropagation(); const imgElement = document.querySelector('.van-image__img'); if(!imgElement) return; let currentRotation = parseInt(window.getComputedStyle(imgElement).transform.match(/rotate\(([\d]+)deg\)/)[1]); this.rotationDegree += 90; //每次增加90(imgElement as HTMLElement).style.transform = `rotate(${this.rotationDegree}deg)` } } }; </script> ``` 此段代码展示了当点击 "Rotate" 按钮时会触发一次顺时针方向上90°的角度变化,并且阻止冒泡使得会关闭当前正在查看的大图模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值