일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- useEffect
- 참조자료형
- react
- 리액트 네이티브
- 사용하는 이유
- SasS
- 리덕스
- http
- html기초
- async
- Vue3
- react-router
- React Native
- 코린이
- 깃
- 타입스크립트
- 프론트엔드
- 비동기
- 코딩기초
- 코딩독학
- 코딩공부
- CSS
- git
- redux
- TypeScript
- 리액트
- scss
- 자바스크립트
- JavaScript
- 코딩초보
Archives
- Today
- Total
맨 땅에 프론트엔드 개발자 되기
Vue3 이미지 태그에 경로를 동적으로 불러올 때 엑박 / v-bind 이용해서 처리하기 본문
728x90
유튜버 코딩애플 님의 Vue 강의를 듣다가 이미지 경로를 변수로 설정해 불러오니 이미지에 엑박이 떴다.
나의 코드
<template>
<div class="menu">
<a v-for="(menu, key) in menus" :key="key">{{menu}}</a>
</div>
<div v-for="(product, key) in products" :key="key">
<img class="room-img" :src="product.imgSrc" alt="image" />
<h4>{{product.name}}</h4>
<p>{{product.price}}</p>
<button @click="reportFakeProduct(key)">허위매물신고</button> <span>신고수 : {{product.fakeReport}}</span>
</div>
</template>
<script>
export default {
name: 'App',
data() {
return {
menus: ['Home', 'Shop', 'About'],
products : [
{name: '역삼동 원룸', price: '70만원', fakeReport: 0, imgSrc: ('./assets/images/room0.jpg')},
{name: '천호동 원룸', price: '50만원', fakeReport: 0, imgSrc: ('./assets/images/room1.jpg')},
{name: '마포구 원룸', price: '60만원', fakeReport: 0, imgSrc: ('./assets/images/room2.jpg')},
]
}
},
methods: {
reportFakeProduct(num) {
this.products[num].fakeReport = this.products[num].fakeReport + 1;
}
},
}
</script>

이를 해결하기 위해 v-bind 속성을 구글링했다. 이미지 경로에 require를 부여해줘야 한다고 했다.
수정 코드
<template>
<div class="menu">
<a v-for="(menu, key) in menus" :key="key">{{menu}}</a>
</div>
<div v-for="(product, key) in products" :key="key">
<img class="room-img" :src="product.imgSrc" alt="image" />
<h4>{{product.name}}</h4>
<p>{{product.price}}</p>
<button @click="reportFakeProduct(key)">허위매물신고</button> <span>신고수 : {{product.fakeReport}}</span>
</div>
</template>
<script>
export default {
name: 'App',
data() {
return {
menus: ['Home', 'Shop', 'About'],
products : [
{name: '역삼동 원룸', price: '70만원', fakeReport: 0, imgSrc: require('./assets/images/room0.jpg')},
{name: '천호동 원룸', price: '50만원', fakeReport: 0, imgSrc: require('./assets/images/room1.jpg')},
{name: '마포구 원룸', price: '60만원', fakeReport: 0, imgSrc: require('./assets/images/room2.jpg')},
]
}
},
methods: {
reportFakeProduct(num) {
this.products[num].fakeReport = this.products[num].fakeReport + 1;
}
},
}
</script>

왜 require 를 부여해줘야 할까?
require는 import와 비슷하게 파일 외부의 데이터를 가져올 때 사용하는 JavaScript 내장함수다. HTML에서 바로 이미지 경로를 불러오는 것과 달리 JavaScript에서 이미지 경로를 문자열 형태로 그대로 입력하면 String 그 자체로 인식이 되기 때문에 이미지 경로를 JavaScript 파일에 심기 위해 require가 필요한 것이다.
오늘의 에러 기록 끝!
@출처
코딩애플님 강의 꾸르잼!
https://www.youtube.com/watch?v=-tVaahsXpwk
728x90
'코딩 공부 일지 > Vue JS' 카테고리의 다른 글
Vue3 Cli로 생성된 프로젝트 / 환경변수 .env 설정하기 (0) | 2022.03.15 |
---|---|
Vue3 Cli로 생성된 프로젝트 / multi-word-component-names 오류 해결 (3) | 2022.03.14 |