Vue動態(tài)設置img的src不生效的問題解決
原因分析
在vue項目中動態(tài)設置img的src時,圖片會加載失敗。我們可以先看個例子。
<template>
<div>
<h1>動態(tài)設置圖片</h1>
<div>
<h5>圖片一</h5>
<img
:src="
logoFlag === 'vue'
? '../assets/vue-logo.png'
: '../assets/react-logo.png'
"
/>
<div>
<button @click="changeLogo">切換</button>
</div>
<h5>圖片二</h5>
<img :src="imgUrl" />
</div>
</div>
</template>
<script>
export default {
name: "ImgTest",
data() {
return {
logoFlag: "vue",
imgUrl: "../assets/vue-logo.png",
};
},
methods: {
changeLogo() {
this.logoFlag = this.logoFlag === "vue" ? "react" : "vue";
},
},
};
</script>
<style scoped>
img {
width: 50px;
height: 50px;
}
</style>
由結果可以看出圖片加載失敗。
查看elements之后會發(fā)現(xiàn),src被當做靜態(tài)資源處理了,并沒有進行編譯。

解決方法
為了解決動態(tài)的src沒有進行編譯的問題,我們可以使用require引入圖片。
<template>
<div>
<h1>動態(tài)設置圖片</h1>
<div>
<h5>圖片一</h5>
<img
:src="
logoFlag === 'vue'
? require('../assets/vue-logo.png')
: require('../assets/react-logo.png')
"
/>
<div>
<button @click="changeLogo">切換</button>
</div>
<h5>圖片二</h5>
<img :src="imgUrl" />
</div>
</div>
</template>
<script>
export default {
name: "ImgTest",
data() {
return {
logoFlag: "vue",
imgUrl: require("../assets/vue-logo.png"),
};
},
methods: {
changeLogo() {
this.logoFlag = this.logoFlag === "vue" ? "react" : "vue";
},
},
};
</script>
<style scoped>
img {
width: 50px;
height: 50px;
}
</style>
可以看到使用require引入圖片之后,圖片就可以正常加載出來了。
import和require的區(qū)別
require是在運行時加載,而import是編譯時加載;
如果希望使用import引入圖片就需要提前導入圖片。
<template>
<div>
<h1>動態(tài)設置圖片</h1>
<div>
<h5>圖片一</h5>
<img
:src="
logoFlag === 'vue'
? require('../assets/vue-logo.png')
: require('../assets/react-logo.png')
"
/>
<div>
<button @click="changeLogo">切換</button>
</div>
<h5>圖片二</h5>
<img :src="imgUrl" />
</div>
</div>
</template>
<script>
import reactLogo from "../assets/react-logo.png";
export default {
name: "ImgTest",
data() {
return {
logoFlag: "vue",
imgUrl:reactLogo,
};
},
methods: {
changeLogo() {
this.logoFlag = this.logoFlag === "vue" ? "react" : "vue";
},
},
};
</script>
<style scoped>
img {
width: 50px;
height: 50px;
}
</style>
另外require和import另外的區(qū)別:
require是CommonJs/AMD規(guī)范,而import是ESMAScript6+規(guī)范。
到此這篇關于Vue動態(tài)設置img的src不生效的問題解決的文章就介紹到這了,更多相關Vue img src不生效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
element-ui?el-upload實現(xiàn)上傳文件及簡單的上傳文件格式驗證功能
前端上傳文件后,后端接受文件進行處理后直接返回處理后的文件,前端直接再將文件下載下來,下面這篇文章主要給大家介紹了關于element-ui?el-upload實現(xiàn)上傳文件及簡單的上傳文件格式驗證功能的相關資料,需要的朋友可以參考下2022-11-11
vue項目中接入websocket時需要ip端口動態(tài)部署問題
這篇文章主要介紹了vue項目中接入websocket時需要ip端口動態(tài)部署問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
vue中如何實現(xiàn)后臺管理系統(tǒng)的權限控制的方法示例
這篇文章主要介紹了vue中如何實現(xiàn)后臺管理系統(tǒng)的權限控制的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09
vue3實現(xiàn)動態(tài)側邊菜單欄的幾種方式簡單總結
在做開發(fā)中都會遇到的需求,每個用戶的權限是不一樣的,那他可以訪問的頁面(路由)可以操作的菜單選項是不一樣的,如果由后端控制,我們前端需要去實現(xiàn)動態(tài)路由,動態(tài)渲染側邊菜單欄,這篇文章主要給大家介紹了關于vue3實現(xiàn)動態(tài)側邊菜單欄的幾種方式,需要的朋友可以參考下2024-02-02

