Vue動態(tài)設(shè)置圖片時src不生效的原因及解決方法
原因分析
在vue項目中動態(tài)設(shè)置img的src時,圖片會加載失敗。我們可以先看個例子。
<template> <div> <h1>動態(tài)設(shè)置圖片</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>
由結(jié)果可以看出圖片加載失敗。
查看elements之后會發(fā)現(xiàn),src被當(dāng)做靜態(tài)資源處理了,并沒有進行編譯。
解決方法
為了解決動態(tài)的src沒有進行編譯的問題,我們可以使用require引入圖片。
<template> <div> <h1>動態(tài)設(shè)置圖片</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引入圖片就需要提前導(dǎo)入圖片。
<template> <div> <h1>動態(tài)設(shè)置圖片</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ī)范。
到此這篇關(guān)于Vue動態(tài)設(shè)置圖片時src不生效的原因及解決方法的文章就介紹到這了,更多相關(guān)Vue動態(tài)設(shè)置圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vuex通過getters訪問數(shù)據(jù)為undefined問題及解決
這篇文章主要介紹了vuex通過getters訪問數(shù)據(jù)為undefined問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08vue-router(this.$router)如何在新窗口打開路由跳轉(zhuǎn)頁面
這篇文章主要介紹了vue-router(this.$router)如何在新窗口打開路由跳轉(zhuǎn)頁面問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12使用vue-aplayer插件時出現(xiàn)的問題的解決
這篇文章主要介紹了使用vue-aplayer插件時出現(xiàn)的問題的解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03淺談ElementUI中switch回調(diào)函數(shù)change的參數(shù)問題
今天小編就為大家分享一篇淺談ElementUI中switch回調(diào)函數(shù)change的參數(shù)問題,具有很好的價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08vue中實現(xiàn)全屏以及對退出全屏的監(jiān)聽
本文主要介紹了vue中實現(xiàn)全屏以及對退出全屏的監(jiān)聽,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07