728x90
๋ฐ์ํ
๐ก ์ค์ต ํฌ์ธํธ!
- ๋ฐ๋ณต๋ฌธ ์์ด ์๋จ๋ฉ๋ด๋ฅผ ๋ง๋ ํ v-for ์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ ํด๋ณด์๋ค.
๐ ๋ฐ๋ณต๋ฌธ ์์ด ์๋จ๋ฉ๋ด ๋ง๋ค๊ธฐ
๐ค HTML
<div class="navbar">
<a>Home</a>
<a>Rooms</a>
<a>About</a>
</div>
- ๋ฐ๋ณต๋ฌธ ์์ด ์๋จ๋ฉ๋ด๋ฅผ ๋ง๋๋ ๊ฒ์ด๋ฏ๋ก ๋ฉ๋ด๋ฐ๊ฐ ๋ div ํ๊ทธ ์์ a ํ๊ทธ 3๊ฐ๋ฅผ ๋ฃ์ด ๋ฉ๋ด๋ฅผ 3๊ฐ ์ถ๊ฐํด์ฃผ์๋ค.
๐ค CSS
.navbar {
padding: 15px 0;
background: #6667AB;
color: white;
font-size: 20px;
border-radius: 5px;
}
.navbar a {
padding: 5px 10px;
margin : 0 10px;
}
.navbar a:hover {
background: white;
cursor: pointer;
border-radius: 5px;
color: #6667AB;
transition: all 1s;
}
- ๊ทธ๋ฆฌ๊ณ ๊น๋ํ๊ฒ style ์ ์ ํ์ฃผ์๋ค.
๐ค ์๋จ๋ฉ๋ด ๋ฏธ๋ฆฌ๋ณด๊ธฐ
- ์ฌ๊ธฐ๊น์ง ํ๊ณ ๋๋ฉด ์์ ๊ฐ์ด ์ฌํํ ์๋จ๋ฉ๋ด๊ฐ ์์ฑ๋๋ค.
๐ ๋ฐ๋ณต๋ฌธ์ ํ์ฉํ์ฌ ์๋จ๋ฉ๋ด ๋ง๋ค๊ธฐ
๐ค v-for HTML ๋ฐ๋ณต๋ฌธ ๋ง๋ค๊ธฐ
<div class="navbar">
<a>Home</a>
<a>Rooms</a>
<a>About</a>
</div>
- ์์ ๊ฐ์ ์ฝ๋๋ a ํ๊ทธ๊ฐ ์ฌ๋ฌ๋ฒ ๋ฐ๋ณต๋๋ฏ๋ก v-for ๋ฌธ์ ์ด์ฉํ์ฌ ์ถ์ฝ์ด ๊ฐ๋ฅํ๋ค.
<script>
export default {
name: "App",
data(){
return {
navbar : ['Home', 'Rooms', 'About']
}
}
};
</script>
<div class="navbar">
<a v-for="(menu, i) in navbar" :key="i">{{ menu }}</a>
</div>
- ๋จผ์ , ๋ฐ๋ณตํ ํ๊ทธ์ v-for ์ด๋ผ๋ ์์ฑ์ ๋ฃ๊ณ v-for="์์์ด๋ฆ in ์ซ์ํน์data ๋ณด๊ดํจ์๋ฐ์ดํฐ" ์ ๊ฐ์ ํ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํด์ค๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ด๋ฐ ๋ฐ๋ณต๋ฌธ์๋ ๋ฐ๋ณตํ ์์๋ค์ ๊ตฌ๋ถ์ง๊ธฐ ์ํ key ๊ฐ์ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ฏ๋ก :key="์ ๋ํฌํ๊ฐ" ๊ณผ ๊ฐ์ด ์ถ๊ฐ๋ก ์ฝ๋๋ฅผ ์์ฑํด์ค๋ค.
- ์ด๋ ๊ฒ ์์ฑ๋ HTML ํ๊ทธ๋ ์ซ์ ํน์ data ๋ณด๊ดํจ์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ๊ธธ์ด๋งํผ ๋ฐ๋ณต์์ฑ๋๋ค.
- ๋์ ๊ฒฝ์ฐ data ๋ณด๊ดํจ์ ์ ์ฅ๋ navbar ๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ์๊ธฐ ๋๋ฌธ์ navbar ๋ผ๋ array ์๋ฃํ์ ๊ธธ์ด์ธ 3๋งํผ HTML ํ๊ทธ๊ฐ ๋ฐ๋ณต์์ฑ๋๋ ๊ฒ์ด๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋ฐ๋ณต๋ฌธ์ด ๋ฐ๋ณต๋ ๋๋ง๋ค navbar ๋ผ๋ array ์๋ฃํ์ ์์ ํ๋ํ๋๊ฐ menu ๋ผ๋ ๋ณ์๊ฐ ๋๋ ๊ฒ์ด๋ค.
- ๊ทธ๋์ menu ๋ผ๋ ๋ณ์๋ฅผ HTML ๋ด์ฉ์ผ๋ก ๋ฐ์ดํฐ๋ฐ์ธ๋ฉํ์ฌ ์ถ๋ ฅํด๋ณด๋ฉด ๋ฐ๋ณต๋ฌธ์ด ๋ ๋๋ง๋ค Home ์ด ๋๊ธฐ๋ ํ๊ณ , Shop ์ด ๋๊ธฐ๋ ํ๊ณ About ์ด ๋๊ธฐ๋ ํ๋ ๊ฒ์ด๋ค.
- ๋ํ ๋ณ์ ์๋ฆฌ์ ์๊ดํธ๋ฅผ ๋ฃ๊ฒ ๋๋ฉด ๋ณ์๋ฅผ 2๊ฐ๊น์ง ๋ง๋ค ์ ์๋ค.
- ๋ณดํต ์ฒซ๋ฒ์งธ๋ก ๋ง๋ ๋ณ์(์ ์ฝ๋์์ menu)๋ navbar ๋ผ๋ array ์๋ฃํ์ ๊ฐ ๋ฐ์ดํฐ๊ฐ ๋๋ ๊ฒ์ด๊ณ , ๋๋ฒ์งธ๋ก ๋ง๋ ๋ณ์(์ ์ฝ๋์์ i)๋ 0, 1, 2... ์ด๋ฐ ์์ผ๋ก 1์ฉ ์ฆ๊ฐํ๋, ๋ฐ๋ณตํ์๋ฅผ ์๋ ค์ฃผ๋ ์ ์๊ฐ ๋๋๋ฐ, ๊ด์ต์ ์ผ๋ก ์ด๊ฒ์ :key ์์ ๋ฃ์ด์ค๋ค.
๐ค ์๋จ๋ฉ๋ด ๋ฏธ๋ฆฌ๋ณด๊ธฐ
- ์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ ํ ์ ์ฅ์ ํด๋ ๊ธฐ์กด์ ๋ฐ๋ณต๋ฌธ ์์ด ์์ฑํ ์ฝ๋์ ๋์ผํ๊ฒ ์๋จ๋ฉ๋ด๊ฐ ๋ง๋ค์ด์ง ๊ฒ์ ํ์ธํ ์ ์๋ค.
728x90
๋ฐ์ํ
'[๊ฐ๋ฐ] Practice > Vue.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Vue.js] import / export ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฐ์ธ๋ฉํ๊ธฐ (0) | 2022.04.01 |
---|---|
[Vue.js] v-if ์ ๋ชจ๋ฌ์ฐฝ ๋ง๋ค๊ธฐ (0) | 2022.04.01 |
[Vue.js] Vue ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ก click ๊ฐ์งํ๊ธฐ (0) | 2022.04.01 |
[Vue.js] Vue ๋ฐ์ดํฐ๋ฐ์ธ๋ฉํ๊ธฐ (0) | 2022.03.31 |
[Vue.js] Vue ์ค์นํ๊ธฐ ๋ฐ ๊ฐ๋ฐํ๊ฒฝ ์ ํ ํ๊ธฐ (0) | 2022.03.31 |