728x90
๋ฐ์ํ
๐ก ์ค์ต ํฌ์ธํธ!
- data.js ํ์ผ์ ๋ง๋ค์ด ๋ฐ์ดํฐ๋ฅผ ๋ด์์ค ๋ค์ import / export ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ App.vue ํ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ ๋ฐ์ดํฐ๋ฐ์ธ๋ฉ์ ํด๋ณด์๋ค.
- ์ด์ ๊ทธ ๋ค์์๋ ๋ชจ๋ฌ์ฐฝ์ ๋ฐ์ดํฐ๋ฐ์ธ๋ฉ์ ์งํํด๋ณผ ๊ฒ์ด๋ค.
- ๊ทธ๋์ ๋ ํ์๋งค๋ฌผ์ ๊ณ ๋ฒํผ์ ์ ์ปค์๋ฅผ ์ฌ๋ฆฌ๊ธฐ๋ง ํ๊ณ ํด๋ฆญ์ ์ํ์ง..? ๊ดํ ๊ธฐ๋ฅ ์๋ ์ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ...
๐ ์ฌ์ฉํ ์ํ ๋ฐ์ดํฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
[{
id : 0,
title: "Sinrim station 30 meters away",
image: "https://codingapple1.github.io/vue/room0.jpg",
content: "18๋
์ ์ถ๊ณต์ฌํ ๋จํฅ ์๋ฃธ โ๏ธ, ๊ณต๊ธฐ์ฒญ์ ๊ธฐ ์ ๊ณต",
price: 340000
},
{
id : 1,
title: "Changdong Aurora Bedroom(Queen-size)",
image: "https://codingapple1.github.io/vue/room1.jpg",
content: "์นจ์ค๋ง ๋ฐ๋ก ์๋ ๊ณต์ฉ ์
ฐ์ดํ์ฐ์ค์
๋๋ค. ์ต๋ 2์ธ ๊ฐ๋ฅ",
price: 450000
},
{
id : 2,
title: "Geumsan Apartment Flat",
image: "https://codingapple1.github.io/vue/room2.jpg",
content: "๊ธ์ฐ์ค๊ฑฐ๋ฆฌ ์ญ์ธ๊ถ ์ํํธ์
๋๋ค. ์ ์๋๋ฌผ ๋ถ๊ฐ๋ฅ ?",
price: 780000
},
{
id : 3,
title: "Double styled beds Studio Apt",
image: "https://codingapple1.github.io/vue/room3.jpg",
content: "๋ฌด์๋์ธ๊ทผ 2์ธ์ฉ ์๋ฃธ์
๋๋ค. ์ ์ธ ์ ํ๊ฐ๋ฅ",
price: 550000
},
{
id : 4,
title: "MyeongIl Apartment flat",
image: "https://codingapple1.github.io/vue/room4.jpg",
content: "ํ์ฒ๋ ์ํํธ ์์ธ, ๋จํฅ, ์ญ 5๋ถ๊ฑฐ๋ฆฌ, ํ์๋งค๋ฌผ์๋",
price: 680000
},
{
id : 5,
title: "Banziha One Room",
image: "https://codingapple1.github.io/vue/room5.jpg",
content: "๋ฐ์งํ ์๋ฃธ์
๋๋ค. ๋น์ฌ ๋ ๋ฌผ๊ฐ๋ ์๋๊ฑฐ ๋นผ๋ฉด ์ข์์",
price: 370000
}];
- ์๋ฒ๊ฐ ์์ผ๋ฉด ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์ ๋ณด์ฌ์ฃผ์ด์ผ ํ์ง๋ง, ์๋ฒ ์์ด ์งํํ๋ฏ๋ก ๊ฐ์ฌ๋์ด ๋ฐ์ดํฐ๋ฅผ ์ค๋นํด์ค์ จ๋ค.
- ๋ฐ์ดํฐ๊ฐ ์ ์ผ๋ฉด data ๋ณด๊ดํจ์ ๋ฐ๋ก ๋ฃ์ด์ฃผ์ด๋ ๋์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ ๋ง๊ธฐ ๋๋ฌธ์ ์ด๋ฒ์๋ import / export ๋ฌธ๋ฒ์ ์ด์ฉํ์ฌ ๋ค๋ฅธ js ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ค ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
๐ import / export ๋ฌธ๋ฒ ์ฌ์ฉํ๊ธฐ
- ๋ณดํต ํน์ JavaScript ํ์ผ์์ ๋ง๋ ๋ณ์๋ ์๋ฃ๋ฅผ ๋ค๋ฅธ JavaScript ํ์ผ์์ ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ import ์ export ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ค.
- ์ผ๋จ ์ฌ์ฉํ๊ณ ์ถ์ ์๋ฃ๊ฐ ๋ด๊ธด ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ export ๋ฅผ ํด์ผ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉํ๊ณ ์ถ์ ํ์ผ์์ import ํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
- React ์์ import ์ export ๋ฅผ ๊ณต๋ถํ ์ ์ด ์๋ค๋ฉด vue ์์๋ import / export ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ๋๊ฐ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ฏ๋ก ์์ธํ ์ค๋ช
์ ์๋ตํ๋ค.
(๊ทธ๋๋ ๊ถ๊ธํ๋ค๋ฉด React ๊ณต๋ถํ ๋ ์ ๋ฆฌํด๋์ ์๋ฃ๊ฐ ์์ผ๋ ์ฌ๊ธฐ๋ฅผ ํด๋ฆญ!)
๐ค import ํ ๋ฐ์ดํฐ๋ฅผ data ๋ณด๊ดํจ์ ๋ฑ๋กํ๊ธฐ
// data.js ์ ์ ์ฅํ ๋ฐ์ดํฐ๋ฅผ roomData ๋ผ๋ ๋ณ์๋ช
์ผ๋ก import ํด์ฃผ์๋ค.
import roomData from './assets/data'
// data ๋ณด๊ดํจ์๋ import ํ roomData ๋ฅผ rooms ๋ผ๋ ์ด๋ฆ์ผ๋ก ์ ์ฅํด์ฃผ์๋ค.
data(){
return {
openModal : false,
navbar : ['Home', 'Rooms', 'About'],
rooms : roomData,
report : [...roomData].fill(0),
}
},
- ๋๋ data.js ํ์ผ์ ๋ง๋ค์ด ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ํ roomData ๋ผ๋ ๋ณ์๋ช ์ผ๋ก export ํด์ฃผ์๋ค.
- ๊ทธ๋ฆฌ๊ณ App.vue ํ์ผ์์ import ํ ๋์๋ roomData ๋ผ๋ ์ด๋ฆ์ผ๋ก import ํด์ฃผ์๋ค.
- ์ด์ import ํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด data ๋ณด๊ดํจ์ ๋ฑ๋กํ๋ ๊ณผ์ ์ด ํ์ํ๋ฐ, ๋๋ roomData ๋ฅผ rooms ๋ผ๋ ์ด๋ฆ์ผ๋ก data ๋ณด๊ดํจ์ ์ ์ฅํด์ฃผ์๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ง๊ธ ํ ํ์๋ ์์ง๋ง, ์ ๊ณ ๋ฒํผ ํด๋ฆญ์ ์ ๊ณ ์๋ฅผ ์ ์ฅํด๋๋ report ๋ถ๋ถ์ roomData ๊ฐ ๋ณ๊ฒฝ์ด ๋ ๋๋ง๋ค ์์ ์ ํด์ค ์๋ ์๊ธฐ ๋๋ฌธ์, roomData ์ ์ฌ๋ณธ์ ๋ง๋ค์ด ๋ชจ๋ ๊ฐ์ 0์ผ๋ก ์ด๊ธฐํํด์ ์ฌ์ฉํ ์ ์๋๋ก spread ๋ฌธ๋ฒ๊ณผ .fill() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ ํด์ฃผ์๋ค.
(์๋ก์ด ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ ๋ ๊ธฐ์กด์ ๊ธฐ๋ฅ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ๊ทธ ๋ ๊ทธ ๋ ์์ ํด์ฃผ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค.)
๐ค data ๋ณด๊ดํจ์ ๋ฑ๋กํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฐ์ธ๋ฉํ๊ธฐ
{
id : 0,
title: "Sinrim station 30 meters away",
image: "https://codingapple1.github.io/vue/room0.jpg",
content: "18๋
์ ์ถ๊ณต์ฌํ ๋จํฅ ์๋ฃธ โ๏ธ, ๊ณต๊ธฐ์ฒญ์ ๊ธฐ ์ ๊ณต",
price: 340000
}
<div class="card" v-for="(room, i) in rooms" :key="i">
<img :src="room.image" class="room-image">
<h4 @click="openModal = true" class="room-name">{{ room.title }}</h4>
<p>{{ room.price }}์</p>
<span>์ ๊ณ ์: {{ report[room.id] }}</span> <button class="report" @click="increase(room.id)">ํ์๋งค๋ฌผ์ ๊ณ </button>
</div>
- ๊ธฐ์กด์ ํ๋์ฝ๋ฉํ์ฌ ์์ฑํด๋์๋ html ์ฝ๋๋ฅผ ๋จผ์ v-for ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋ง๋ค์ด์ฃผ์๋ค.
(๋ฐ๋ณต๋ฌธ์ผ๋ก ๋ง๋๋ ์์ธํ ๊ณผ์ ์ ์๋ตํ๋ค. ๊ทธ๋ฅ ๊ท์น ์ฐพ์์ ์ค์ฌ๋ฒ๋ฆฌ๋ฉด OK!) - ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฐ์ธ๋ฉ์ ์งํํ ๋ฐ์ดํฐ์ ํ์์ ์ฐธ๊ณ ํ์ฌ ์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ์๋ค.
728x90
๋ฐ์ํ
'[๊ฐ๋ฐ] Practice > Vue.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Vue.js] Component ๋ง๋ค๊ธฐ (0) | 2022.04.02 |
---|---|
[Vue.js] ๋ชจ๋ฌ์ฐฝ ๋ด์ ์์ธ ํ์ด์ง ๋ง๋ค๊ธฐ (0) | 2022.04.01 |
[Vue.js] v-if ์ ๋ชจ๋ฌ์ฐฝ ๋ง๋ค๊ธฐ (0) | 2022.04.01 |
[Vue.js] Vue ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ก click ๊ฐ์งํ๊ธฐ (0) | 2022.04.01 |
[Vue.js] Vue ๋ฐ๋ณต๋ฌธ v-for ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2022.03.31 |