vue项目中图片路径以变量形式传入,未正常显示?

说明: 下面所举的例子均在 vue-cli 创建的项目中

  • 我们正常去显示图片的方式都是把图片的相对路径放在 img 标签的 src 属性中
<img src="../assets/delete-grey.svg" alt="delate">

像这样引入图片便可正常显示, 审查元素发现图片地址变成了 img/delete-grey.836b11f9.svg 这表明该图片已被正常解析

image.png

  • 如果我们引入较少数量的图片, 采用上述方式完全没有问题; 当一个组件内部有图片引入, 并且该组件会被重复调用, 根据不同场景展示不同的图片, 此时组件内部图片的路径就只能以一个变量的形式来接收父组件传过来的值

子组件

// FooterButtons 组件
<img :src="item.url" alt="img">

父组件

// index.vue DOM结构
<FooterButtons
  :buttons="footerButtons"
/>
// footerButtons 变量
footerButtons: [
  {
     url: '../assets/next.svg',
  },
]

现在来看一下页面中的效果, 图片是没有办法正常显示的

image.png

审查元素发现, 图片路径是 ../assets/next.svg, 对比上述正常显示的图片路径我们不难发现它们之间的区别, next.svg 并没有被解析;

这是因为图片作为一种资源并没有被引入进来, 我们通过变量传递过去的仅仅是一个可以表示图片地址的字符串

image.png

  • 解决办法
    通过 require 对图片路径进行引用, 这样传递过去的就是一种图片资源
// index.vue DOM结构
<FooterButtons
  :buttons="footerButtons"
/>
// footerButtons 变量
footerButtons: [
  {
     url: require('../assets/next.svg'),
  },
]

效果


image.png

以上!
有错望指出

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 1,767评论 0 4
  • 最全的iOS面试题及答案 iOS面试小贴士 ———————————————回答好下面的足够了-----------...
    zweic阅读 2,731评论 0 73
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 2,045评论 0 12
  • 一.学习与实践 1.付出不亚于任何人的努力 2.要谦虚不要骄傲 3.要每天反省 4.活着就要感谢 5.集善行思利他...
    小尤_7795阅读 297评论 0 0
  • 从抖音上看到王志文主演的郭小鹏最后的对白,内容大家可以网上搜索,抖音也有短视频,这里我就不说了。 我花了几天时间看...
    江星独蕴阅读 401评论 0 2