Vue ์ธ์คํด์ค ๋ผ์ดํ ์ฌ์ดํด
์ธ์คํด์ค ์์ฑ ์ ๋ฐ์ดํฐ ๊ด์ฐฐ, ํ ํ๋ฆฟ ์ปดํ์ผ, DOM ์ ๊ฐ์ฒด ์ฐ๊ฒฐ, ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ DOM ์ ์ ๋ฐ์ดํธ ํ๊ฒ ๋๋ค.
โ Creation: ์ปดํฌ๋ํธ ์ด๊ธฐํ ๋จ๊ณ
์ปดํฌ๋ํธ๊ฐ DOM์ ์ถ๊ฐ๋๊ธฐ ์ , ํด๋ผ์ด์ธํธ๋จ๊ณผ ์๋ฒ๋จ ๋ ๋๋ง ๋ชจ๋์์ ์ฒ๋ฆฌํด์ผ ํ ์ผ๋ก ์์ง ์ปดํฌ๋ํธ๊ฐ ๋์ ์ถ๊ฐ๋๊ธฐ ์ ์ด๊ธฐ ๋๋ฌธ์ ๋์ ์ ๊ทผํ๊ฑฐ๋ this.$el๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- beforeCreate
Vue.JS์ ๋ผ์ดํ ์ฌ์ดํด ํ
์ค์์ ๊ฐ์ฅ ๋จผ์ ์คํ ๋๋ ํ
์
๋๋ค. data์ ์ด๋ฒคํธ($on, $once, $off, $emit), ๊ฐ์์($watch)๋ฑ์ด ์ค์ ๋๊ธฐ ์ ์ ํธ์ถ๋๋ ๋ผ์ดํ ์ฌ์ดํด ํ
์ด๋ค.
- created
data, computed, methods, watch ๋ฑ๊ณผ ๊ฐ์ ์ต์
์ค์ ์ด ์๋ฃ๋ ์์ ์ด๊ธฐ ๋๋ฌธ์, data ๋ฑ์ ์ฌ์ฉํ ์ ์๋ค. ํ์ง๋ง ์์ง DOM์ ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ๋์ง ์์๊ธฐ ๋๋ฌธ์ $el์ ์ฌ์ฉํ ์ ์๋ค.
โก Mounting: DOM ์ฝ์
๋จ๊ณ
์ด๊ธฐ ๋ ๋๋ง ์ง์ ์ ์ปดํฌ๋ํธ์ ์ง์ ์ ๊ทผ, ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์์๋ ์ง์ํ์ง ์๋๋ค.
- beforeMount
์ปดํฌ๋ํธ ์ด๊ธฐ์ data๊ฐ ์ธํ
๋์ด์ผ ํ๋ค๋ฉด created ๋ผ์ดํ ์ฌ์ดํด ํ
์, ๋ ๋๋ง ๋๊ณ DOM์ ๋ณ๊ฒฝํด์ผ ํ๋ค๋ฉด mounted ๋ผ์ดํ ์ฌ์ดํด ํ
์ ์ฌ์ฉํ๋ฉด ๋๊ธฐ ๋๋ฌธ์, ๊ฑฐ์ ์ฌ์ฉํ์ง ์๋ ๋ผ์ดํ ์ฌ์ดํด ํ
์ด๋ค.
- mounted
์ปดํฌ๋ํธ๊ฐ DOM์ ์ถ๊ฐ ๋ ํ ํธ์ถ๋๋ ๋ผ์ดํ ์ฌ์ดํด ํ
์ด๋ค. ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ์ง์ํ์ง ์๋๋ค.
$el์ ์ฌ์ฉํ์ฌ DOM์ ์ ๊ทผ ํ ์ ์๋ค. mounted ํ ์ด ํธ์ถ๋์๋ค๊ณ ๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ๋์๋ค๊ณ ๋ณด์ฅํ ์๋ ์๋ค.
์ ์ฒด๊ฐ ๋ ๋๋ง ๋ณด์ฅ๋ ์ํ์์ ์์
์ ํ๊ธฐ ์ํด์๋ $nextTick์ ์ฌ์ฉํด์ผ ํ๋ค.
๋ถ๋ชจ์ ์์ ๊ด๊ณ์ ์ปดํฌ๋ํธ์์ ์ฐ๋ฆฌ๊ฐ ์๊ฐํ ์์๋ก mounted๊ฐ ๋ฐ์ํ์ง ์๋๋ค๋ ์ ์ด๋ค. ์ฆ ๋ถ๋ชจ์ mountedํ
์ด ์์์ mountedํ
๋ณด๋ค ๋จผ์ ์คํ๋์ง ์๋๋ค. ์คํ๋ ค ๊ทธ ๋ฐ๋์ด๋ค.
โข Updating: Diff ๋ฐ ์ฌ๋ ๋๋ง ๋จ๊ณ
์ปดํฌ๋ํธ์์ ์ฌ์ฉ๋๋ ๋ฐ์ํ ์์ฑ๋ค์ด ๋ณ๊ฒฝ๋๊ฑฐ๋ ์ด๋ค ์ด์ ๋ก ์ฌ ๋ ๋๋ง์ด ๋ฐ์๋๋ฉด ์คํ, ์๋ฒ ๋ ๋๋ง์์๋ ํธ์ถ๋์ง ์๋๋ค.
- beforeUpdate
์
๋ฐ์ดํธ ๋ ๊ฐ๋ค์ ๊ฐ์ง๊ณ ์๋ ์ํ์ด๊ธฐ ๋๋ฌธ์, ์
๋ฐ์ดํธ ๋ ๊ฐ์ผ๋ก ๋ค๋ฅธ ๊ฐ๋ค์ ์
๋ฐ์ดํธ ํ ์ ์๋ค. ์ด ํ
์์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋๋ผ๋ ๋ค์ beforeUpdate ํ
์ด ํธ์ถ ๋์ง ์๊ธฐ ๋๋ฌธ์, ๋ฌดํ ๋ฃจํ์ ๋น ์ง ๊ฑฑ์ ์ ํ์ง ์์๋ ๋๋ค.
- updated
DOM์ด ์
๋ฐ์ดํธ ๋ ํ ํธ์ถ ๋๋ ํ
์ด๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝ ๋ ํ์ DOM์ ์ด์ฉํด์ผ ํ๋ ์ฒ๋ฆฌ๋ฅผ ํ ๋ ์ฌ์ฉํ๊ธฐ ์ ์ฉํ ํ
์ด๋ค. mounted ํ
๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ ๋ ๋๋ง์ด ๋๋ฌ๋ค๋ ๊ฒ์ด ๋ณด์ฅ๋ ์ํ์์ ์์
ํ๊ธฐ ์ํด์๋ $nextTick์ ์ฌ์ฉํด์ผ ํ๋ค. beforeUpdate ํ
๊ณผ ๋ค๋ฅด๊ฒ updated ํ
์์ data๋ฅผ ์์ ํ๊ฒ ๋๋ฉด update ํ
์ด ํธ์ถ ๋๊ธฐ ๋๋ฌธ์ ๋ฌดํ ๋ฃจํ์ ๋น ์ง ์ ์์ผ๋ ์ ์ํด์ผ ํ๋ค.
โฃ Destroy: ์ปดํฌ๋ํธ ์ ๊ฑฐ ์ ์คํ
- beforeDestroy
์ปดํฌ๋ํธ๊ฐ ์ ๊ฑฐ ๋๊ธฐ ์ง์ ์ ํธ์ถ๋๋ ๋ผ์ดํ ์ฌ์ดํด ํ
์ด๋ค. ์ด ํ
์์ ์ปดํฌ๋ํธ๋ ๋ณธ๋์ ๊ธฐ๋ฅ๋ค์ ๊ฐ์ง๊ณ ์๋ ์จ์ ํ ์ํ์ด๋ค. ์ด ํ
์์ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ํด์ ํ๊ฑฐ๋ ์ปดํฌ๋ํธ์์ ๋์์ผ๋ก ํ ๋น ๋ฐ์ ์์๋ค์ ํด์ ํด์ผ ํ ๋ ์ฌ์ฉํ๊ธฐ ์ ํฉํ ํ
์ด๋ค. ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ์ง์ํ์ง ์๋๋ค.
- destroyed
์ปดํฌ๋ํธ๊ฐ ์ ๊ฑฐ ๋ ํ ํธ์ถ๋๋ ๋ผ์ดํ ์ฌ์ดํด ํ
์ด๋ค. ์ปดํฌ๋ํธ์ ๋ชจ๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋(@click, @change ๋ฑ..)์ ๋๋ ํฐ๋ธ(v-model, v-show ๋ฑ..)์ ๋ฐ์ธ๋ฉ์ด ํด์ ๋๊ณ , ํ์ ์ปดํฌ๋ํธ๋ ๋ชจ๋ ์ ๊ฑฐ๋๋ค. ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ์ง์ํ์ง ์๋๋ค.
๋ผ์ดํ์ฌ์ดํด ํ | ์ค๋ช |
beforeCreate | Vue ์ธ์คํด์ค๊ฐ ์์ฑ๋๊ณ ๊ฐ์ฅ ์ฒ์์ผ๋ก ์คํ๋๋ ๋จ๊ณ ์ธ์คํด์ค์ data ์ methods ์์ฑ๊ณผ ํ๋ฉด ์์๊ฐ ์ ์๋์ด ์์ง ์์ ์ ๊ทผํ ์ ์์ |
created | Vue ์ธ์คํด์ค๊ฐ ์์ฑ๋์๊ณ data ์ methods ์์ฑ์ด ์ ์๋์ด ๋ ์์ฑ ๊ฐ์ด ์ ๊ทผ ๊ฐ๋ฅ ํ๋ฉด ์์์ ์ธ์คํด์ค๊ฐ ์ฐ๊ฒฐ๋๊ธฐ ์ ์ผ๋ก template ์์ฑ์ ์ ์๋ ๋์๋ ์ ๊ทผํ ์ ์์ |
beforeMount | template ์์ฑ์ ์ง์ ํ ๋งํฌ์ ์์ฑ์ render() ํจ์๋ก ๋ณํํ ํ el ์์ฑ์ ์ง์ ํ ํ๋ฉด ์์์ ์ธ์คํด์ค๋ฅผ ๋ถ์ฐฉํ๊ธฐ ์ง์ ์ ํธ์ถ |
mounted | el ์์ฑ์์ ์ง์ ํ ํ๋ฉด ์์์ ์ธ์คํด์ค๊ฐ ์ฐ๊ฒฐ๋ ํ ํธ์ถ template ์์ฑ์ ์ ์๋ ๋์ ์ ๊ทผํ์ฌ ํ๋ฉด ์์ ์ ์ด ๊ฐ๋ฅ |
beforeUpdate | ์ธ์คํด์ค ์์ฑ์ด ํ๋ฉด์ ์ฐ๊ฒฐ๋๊ณ ๊ด์ฐฐํ๋ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์์ ๋ ํ๋ฉด์ ๋ฐ์๋๊ธฐ ์ ์ ํธ์ถ |
updated | ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๊ณ ๋์ ํ๋ฉด ์์ ์ ์ด ๊ฐ๋ฅ |
beforeDestroy | Vue ์ธ์คํด์ค๊ฐ ์์ด์ง๊ธฐ ์ง์ ์ ํธ์ถ |
destroyed | Vue ์ธ์คํด์ค๊ฐ ์์ด์ง๊ณ ๋ ํ ํธ์ถ |
์ฐธ๊ณ ์๋ฃ ๋ฐ ์ถ์ฒ ๐โ๏ธ
https://v3.ko.vuejs.org/guide/composition-api-lifecycle-hooks.html
https://hyeooona825.tistory.com/40
'๊ฐ๋ฐ > Vue.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
vue router / query vs params (0) | 2022.06.14 |
---|---|
$nextTick() (0) | 2022.04.18 |
Vue3 Composition API (0) | 2022.04.06 |
Vuex / ์ํ๊ด๋ฆฌ / Vuex ํจํด ๋ฐ ์์ (0) | 2022.04.05 |
Vue ๋ผ์ฐํฐ / SPA / Router ๊ฐ ์ ๋ฌ (0) | 2022.04.04 |
๋๊ธ