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不生效內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
element-ui?el-upload實現(xiàn)上傳文件及簡單的上傳文件格式驗證功能
前端上傳文件后,后端接受文件進行處理后直接返回處理后的文件,前端直接再將文件下載下來,下面這篇文章主要給大家介紹了關于element-ui?el-upload實現(xiàn)上傳文件及簡單的上傳文件格式驗證功能的相關資料,需要的朋友可以參考下2022-11-11vue項目中接入websocket時需要ip端口動態(tài)部署問題
這篇文章主要介紹了vue項目中接入websocket時需要ip端口動態(tài)部署問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09vue中如何實現(xiàn)后臺管理系統(tǒng)的權限控制的方法示例
這篇文章主要介紹了vue中如何實現(xiàn)后臺管理系統(tǒng)的權限控制的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09vue3實現(xiàn)動態(tài)側邊菜單欄的幾種方式簡單總結
在做開發(fā)中都會遇到的需求,每個用戶的權限是不一樣的,那他可以訪問的頁面(路由)可以操作的菜單選項是不一樣的,如果由后端控制,我們前端需要去實現(xiàn)動態(tài)路由,動態(tài)渲染側邊菜單欄,這篇文章主要給大家介紹了關于vue3實現(xiàn)動態(tài)側邊菜單欄的幾種方式,需要的朋友可以參考下2024-02-02