728x90
๋ฐ์ํ
๐ก ์ค์ต ํฌ์ธํธ!
- ์ด๋ฒ ์๊ฐ์๋ JavaScript ๋ React ์์ ์ฌ์ฉํ๋ click ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ Vue ์์๋ ์ด๋ค ์์ผ๋ก ์ฌ์ฉํ๋์ง ์์๋ณด์๋ค.
๐ "ํ์๋งค๋ฌผ์ ๊ณ " ๋ฒํผ ํด๋ฆญ์ ์ ๊ณ ์ ํ์ํ๊ธฐ
๐ค ๋ ์ด์์ ๋ง๋ค๊ธฐ
<div>
<h4>{{ rooms[0] }}</h4>
<p>{{ prices[0] }}๋ง์</p>
<button>ํ์๋งค๋ฌผ์ ๊ณ </button> <span>์ ๊ณ ์: 0</span>
</div>
- ์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ์ฌ ํ์๋งค๋ฌผ์ ๊ณ ๋ฒํผ์ ๋ง๋ค๊ณ , ๊ทธ ์์ ์ ๊ณ ์๋ฅผ ํ์ํ๋ ๋ ์ด์์์ ๋ง๋ค์ด๋ณด์๋ค.
๐ค "ํ์๋งค๋ฌผ์ ๊ณ " ๋ฒํผ ์ ์ ๊ณ ์ ๋ถ๋ถ ๋ฐ์ดํฐ๋ฐ์ธ๋ฉํ๊ธฐ
<script>
export default {
name: "App",
data(){
return {
navbar : ['Home', 'Rooms', 'About'],
rooms : ['๋์ฐ๋ ์๋ฃธ', '๊ฐ๋ง๋ ์๋ฃธ', '๊ดด์ ๋ ์๋ฃธ'],
prices : [55, 43, 38],
report : [0, 0, 0],
}
},
};
</script>
- ๋จผ์ , ์ ๊ณ ์๋ฅผ ๊ธฐ๋ก ๋ฐ ์ ์ฅํ ์ ์๋ ๋ณ์๋ ๋ฐ์ดํฐ๊ฐ ํ์ํ๋ฏ๋ก, data ๋ณด๊ดํจ ์์ report ๋ผ๋ array ์๋ฃํ์ ๊ฐ์ผ๋ก ๊ฐ์ง๋ object ๋ฅผ ํ๋ ์ถ๊ฐํด์ฃผ์๋ค.
- ์ html ์ฝ๋์๋ ๋ฒํผ์ด ํ๋์ง๋ง, ์ ์ฒด html ์ฝ๋์ ์ด 3๊ฐ์ ๋ฒํผ์ด ํ์ํ๋ฏ๋ก report ๋ ์ซ์๊ฐ ์๋๋ผ 3๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ array ์๋ฃํ์ผ๋ก ๋ง๋ค์ด ๊ฐ์ผ๋ก ๋ฃ์ด์ค ๊ฒ์ด๋ค.
<div>
<h4>{{ rooms[0] }}</h4>
<p>{{ prices[0] }}๋ง์</p>
<button>ํ์๋งค๋ฌผ์ ๊ณ </button> <span>์ ๊ณ ์: {{ report[0] }}</span>
</div>
- ์ด์ ์ ๊ณ ์ ๋ผ๋ ๊ธ์ ์์ {{ report[0] }} ์ด๋ผ๊ณ ๋ฃ์ด์ฃผ๋ฉด data ๋ณด๊ดํจ์ report ์ ํด๋นํ๋ array ์๋ฃํ์ 0๋ฒ ์ธ๋ฑ์ค ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ฏ๋ก, ์ด์ ์ ํ๋์ฝ๋ฉํ๋ ๋์ ๋์ผํ๊ฒ ๋ธ๋ผ์ฐ์ ์์ 0 ์ด๋ผ๋ ์ซ์๋ฅผ ํ์ธํ ์ ์๋ค.
๐ค "ํ์๋งค๋ฌผ์ ๊ณ " ๋ฒํผ ํด๋ฆญ ์ ์ ๊ณ ์ ์ฆ๊ฐํ๋ ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ (ํจ์ ์ฌ์ฉX)
<div>
<h4>{{ rooms[0] }}</h4>
<p>{{ prices[0] }}๋ง์</p>
<button @click="report[0]++">ํ์๋งค๋ฌผ์ ๊ณ </button> <span>์ ๊ณ ์: {{ report[0] }}</span>
</div>
- JavaScript ์์๋ onclick='' ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ, React ์์๋ onClick="" ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ html ํ๊ทธ์ ๋ฌ์์ฃผ์์๋ค.
- ๋ฐ๋ฉด Vue ์์๋ v-on:click="" ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ v-on: ์ ์ถ์ฝํ @ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ @click="" ๊ณผ ๊ฐ์ ํํ๋ก ๋์ผํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.
- ๋ด๊ฐ ์ํ๋ ๊ธฐ๋ฅ์ ํ์ฌ ์ ๊ณ ์์ธ report[0] ์ + 1 ์ ํด์ฃผ๋ ๊ฒ์ด๋ฏ๋ก ์์ ๊ฐ์ด report[0]++ ๋ก ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์๋ค.
- ์ด ์ธ์๋ report[0} += 1 ๊ณผ ๊ฐ์ด ์์ฑํด๋ ๋์ผํ ๊ธฐ๋ฅ์ ์ํํ๋ค.
- ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ JavaScript ๋ React ์ฒ๋ผ @click ์ธ์๋ @mouseover, @input ๋ฑ๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ์๋ค.
๐ค "ํ์๋งค๋ฌผ์ ๊ณ " ๋ฒํผ ํด๋ฆญ ์ ์ ๊ณ ์ ์ฆ๊ฐํ๋ ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ (ํจ์ ์ฌ์ฉO)
<div>
<h4>{{ rooms[0] }}</h4>
<p>{{ prices[0] }}๋ง์</p>
<button @click="increase(0)">ํ์๋งค๋ฌผ์ ๊ณ </button> <span>์ ๊ณ ์: {{ report[0] }}</span>
</div>
- ์ด๋ฒ์๋ ๋์ผํ ๊ธฐ๋ฅ์ด์ง๋ง ํจ์๋ฅผ ์ฌ์ฉํด์ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์๋ค.
- ๋จผ์ report[0]++ ๋์ ์ increase ๋ผ๋ ์ด๋ฆ์ ํจ์๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ฏ๋ก increase() ์ ํํ๋ก ์์ฑํด์ฃผ์๋ค.
- ๊ทธ๋ฆฌ๊ณ ๊ฐ ๋ฒํผ๋ง๋ค ๋ ๋ฆฝ์ ์ผ๋ก ์๋ํด์ผ ํ๋ฏ๋ก, ์ฒซ๋ฒ์งธ ๋ฒํผ์ ํ๋ผ๋ฏธํฐ๋ก 0 ์ ๋ฐ์์ฃผ์๋ค.
<script>
export default {
name: "App",
data(){
return {
navbar : ['Home', 'Rooms', 'About'],
rooms : ['๋์ฐ๋ ์๋ฃธ', '๊ฐ๋ง๋ ์๋ฃธ', '๊ดด์ ๋ ์๋ฃธ'],
prices : [55, 43, 38],
report : [0, 0, 0],
}
},
methods: {
increase(i){
this.report[i]++;
}
},
};
</script>
- ์ด์ increase() ํจ์๋ฅผ ๋ง๋ค์ด์ฃผ๋ฉด ๋๋ค.
- methods ๋ฅผ ์์ฑํ๋ ๋ถ๋ถ์ด ์์ผ๋ฉด ๋ฐ๋ก ๊ทธ ์์ ํจ์๋ฅผ ๋ง๋ค์ด์ฃผ๋ฉด ๋๊ณ , ์๋ค๋ฉด ์์ ๊ฐ์ด methods: { } ํํ๋ก ์์ฑํด์ค ํ ๊ทธ ์์ ํจ์๋ฅผ ๋ง๋ค์ด์ฃผ๋ฉด ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ data ๋ณด๊ดํจ์์ data ๋ฅผ ๊ฐ์ ธ๋ค ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ๊ผญ this.๋ฐ์ดํฐ์ด๋ฆ ์ ํํ๋ก ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์ด์ผ ํ๋ค.
- this ๋ ๋ฐ๋ก ์ data ๋ณด๊ดํจ์ ๋ด์ ํฐ object ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
728x90
๋ฐ์ํ
'[๊ฐ๋ฐ] Practice > Vue.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Vue.js] import / export ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฐ์ธ๋ฉํ๊ธฐ (0) | 2022.04.01 |
---|---|
[Vue.js] v-if ์ ๋ชจ๋ฌ์ฐฝ ๋ง๋ค๊ธฐ (0) | 2022.04.01 |
[Vue.js] Vue ๋ฐ๋ณต๋ฌธ v-for ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2022.03.31 |
[Vue.js] Vue ๋ฐ์ดํฐ๋ฐ์ธ๋ฉํ๊ธฐ (0) | 2022.03.31 |
[Vue.js] Vue ์ค์นํ๊ธฐ ๋ฐ ๊ฐ๋ฐํ๊ฒฝ ์ ํ ํ๊ธฐ (0) | 2022.03.31 |