# ์ ์ด์ฟผ๋ฆฌ์์ ๋ทฐ ์ฌ๊ณ ๋ฐฉ์์ผ๋ก ์ ํํ๊ธฐ
# ๋ทฐ ๊ฐ๋ฐ์๊ฐ ๋ง์ฃผํ๋ ํ์ค
์ ์ด์ฟผ๋ฆฌ(jQuery)๋ ํ์ฌ๊น์ง๋ ๋ง์ ๊ธฐ์ ๋ค์ด ์ฌ์ฉํ๊ณ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์๋ง๋ ๋ทฐ๋ฅผ ๋ฐฐ์ฐ๊ณ ๋๋ฉด ๊ฐ์ฅ ๋จผ์ ๋ถ๋ชํ๋ ์ผ๋ค์ด ์ ์ด์ฟผ๋ฆฌ๋ก ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ์ ์์ ํด์ผ ํ๋ ์ผ ์ผ๊ฒ๋๋ค.
TIP
jQuery๋ DOM์ ์ฝ๊ฒ ์กฐ์ํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
# ์ ์ด์ฟผ๋ฆฌ์ ๋ทฐ์ ์ฐจ์ด์
์ ์ด์ฟผ๋ฆฌ์ ๋ทฐ์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ํ๋ฉด ์์๋ฅผ ์ง์ ์ ๊ทผํ๋๋ ๊ทธ๋ ์ง ์๋๋์ ๋๋ค. ๋ ์ฝ๊ฒ ์ดํดํ๊ธฐ ์ํด ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ DOM ์ ๊ทผ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. HTML ์ฝ๋๋ ์๋์ ๊ฐ์ด ๊ฐ๋จํ ๋ฒํผ ํ๊ทธ๋ฅผ ์ฌ์ฉํ๊ฒ ์ต๋๋ค.
<button>click me</button>
# ์ ์ด์ฟผ๋ฆฌ์ ๋ฒํผ ํ๊ทธ ์ ๊ทผ
์ ์ด์ฟผ๋ฆฌ๋ ํน์ ํ๊ทธ๋ฅผ ์ ๊ทผํ๊ธฐ ์ผ๋ฐ์ ์ผ๋ก ํ๊ทธ์ id ์์ฑ์ ๋ถ์ฌํ๊ณ ์ ์ด์ฟผ๋ฆฌ ์ ํ์($)๋ฅผ ํ์ฉํฉ๋๋ค.
<button id="btn">click me</button>
$('#btn');
์ ์ฝ๋๋ btn ์์ด๋๋ฅผ ๊ฐ์ง๋ DOM์ ์ ๊ทผํ๋ ์ฝ๋์ ๋๋ค.
# ๋ทฐ์ ๋ฒํผ ํ๊ทธ ์ ๊ทผ
์ด๋ฒ์ ๋ทฐ์ ๋๋ค. ๋ทฐ๋ก ํน์ ํ๊ทธ๋ก ์ ๊ทผํ๋ ค๋ฉด ref ์์ฑ์ ํ์ฉํฉ๋๋ค. ์์ ๋ฒํผ ํ๊ทธ์ ref ์์ฑ์ ๋ถ์ฌํ๊ณ ์ ๊ทผํด๋ณด๊ฒ ์ต๋๋ค.
<button ref="btn">click me</button>
this.$refs.btn
์ด์ฒ๋ผ ๋ฐ๋ก ์ ๊ทผํ๊ณ ์ถ์ ํ๊ทธ์ ref ์์ฑ์ ์ง์ ํ์ฌ ์ฌ์ฉํฉ๋๋ค.
# ์ ์ด์ฟผ๋ฆฌ์ ๋ทฐ๋ฅผ ๊ฐ์ด ์ธ ๋ ์ฃผ์ํ ์
๋ณดํต ๋ทฐ๋ฅผ ๋ฐฐ์ฐ์๊ณ ๋๋ฉด ๊ธฐ์กด์ ์ ์ด์ฟผ๋ฆฌ ๊ธฐ๋ฐ ์์คํ ์ ๊ฐํธํ๊ฑฐ๋ ์๋ก ์๋น์ค๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ฌ๊ธฐ์ ์ ์์ ๋น์จ์ด ์๋นํ ๋์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์ ์ด์ฟผ๋ฆฌ ๊ธฐ๋ฐ์ ์ฝ๋, ํ๋ฌ๊ทธ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์์ ์ฃผ์ํ ์ ์ ์์๋ณด๊ฒ ์ต๋๋ค. ์ฃผ์ํ ์ ์ ๋ฐ๋ก ๋ทฐ์ ์ธ์คํด์ค ๋ผ์ดํ ์ฌ์ดํด์ ๋๋ค.
๋ทฐ์ ๋ผ์ดํ ์ฌ์ดํด์ด๋ ๋ทฐ์ ์ธ์คํด์ค๊ฐ ์์ฑ๋๊ณ ์๋ฉธ๋๊ธฐ๊น์ง์ ๊ณผ์ ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ผ์ดํ ์ฌ์ดํด ํ ์ด๋ผ๋ ๊ฒ ์๋๋ฐ ์ฃผ๋ก ์ฌ์ฉ๋๋ ๊ฑด ์๋์ ๊ฐ์ต๋๋ค.
- created
- beforeMount
- mounted
์ฌ๊ธฐ์ ์ ์ด์ฟผ๋ฆฌ์ ์ ํ์๋ก HTML ํ๊ทธ๋ฅผ ์ ๊ทผํ ์ ์๋ ์์ ์ mounted ๋จ๊ณ์ ๋๋ค. ์ฝ๋๋ก ์๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
<template>
<div>
<button id="btn">click me</button>
</div>
</template>
<script>
import $ from 'jquery';
export default {
mounted() {
$('#btn').click(function() {
alert('hi');
});
}
}
</script>
์ ์ฝ๋๋ ๋ทฐ์ ์ฑ๊ธ ํ์ผ ์ปดํฌ๋ํธ(vue ํ์ผ ํ์ฅ์) ์ฝ๋ ๊ตฌ์กฐ์์ ์ ์ด์ฟผ๋ฆฌ๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ๋ชจ์ต์
๋๋ค. <template>
์์ HTML ํ๊ทธ๊ฐ ์์ผ๋ ์ ์ด์ฟผ๋ฆฌ๋ก ํญ์ ์ ๊ทผํ ์ ์์ ๊ฒ ๊ฐ์ง๋ง ์ค์ ๋ก๋ ๊ทธ๋ ์ง ์์ต๋๋ค. ์๋ํ๋ฉด <template>
์ ์ค์ ๋์ผ๋ก ๋ณํ๋๊ธฐ ์ ์ Virtual DOM ์ํ์ด๊ธฐ ๋๋ฌธ์ ์ ์ ํ ๋ผ์ดํ ์ฌ์ดํด ํ
์์ ์ ๊ทผํ์ง ์์ผ๋ฉด ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์๋ฅผ ๋ค์ด, ์์ ์ฝ๋๋ ๋ฒํผ์ ํด๋ฆญํ์ ๋ hi๋ผ๋ ๊ฒฝ๊ณ ์ฐฝ์ ๋์ฐ์ง๋ง ์๋์ ์ฝ๋๋ ์๋ฌด๋ฐ ๋ฐ์์ด ์์ต๋๋ค.
<template>
<div>
<button id="btn">click me</button>
</div>
</template>
<script>
import $ from 'jquery';
export default {
created() {
$('#btn').click(function() {
alert('hi');
});
}
}
</script>
โ Mixins vs HOC Form โ