๐Ÿงฉ Vue.js ๋ผ์ดํ”„์‚ฌ์ดํด ์ •๋ฆฌ

Vue.js๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋ผ์ดํ”„์‚ฌ์ดํด์— ๋Œ€ํ•ด ํ•œ ๋ฒˆ์ฏค ๋“ค์–ด๋ดค์„ ๊ฒƒ์ด๋‹ค.
ํ•˜์ง€๋งŒ ๋ง‰์ƒ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‹ค ๋ณด๋ฉด ์–ธ์ œ ์–ด๋–ค ํ›…์„ ์จ์•ผ ํ• ์ง€ ํ—ท๊ฐˆ๋ฆฌ๊ธฐ ์‰ฝ๋‹ค.
์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Vue 3 ๊ธฐ์ค€์œผ๋กœ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ์ •๋ฆฌํ•˜๊ณ ,
๊ฐ ํ›…์ด ์‹ค์ œ๋กœ ์–ธ์ œ ์–ด๋–ป๊ฒŒ ํ˜ธ์ถœ๋˜๋Š”์ง€๋ฅผ ํ๋ฆ„ ์œ„์ฃผ๋กœ ํ’€์–ด๋ดค๋‹ค.


๐Ÿ”„ ๋ผ์ดํ”„์‚ฌ์ดํด ํ›…์ด๋ž€?

Vue ์ปดํฌ๋„ŒํŠธ๋Š” ์ƒ์„ฑ๋ถ€ํ„ฐ DOM์— ๋ถ€์ฐฉ๋˜๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐฑ์‹ ๋˜๋ฉฐ
๊ฒฐ๊ตญ ์†Œ๋ฉธ๋˜๊ธฐ๊นŒ์ง€์˜ ์ผ๋ จ์˜ โ€œ์ƒ๋ช… ์ฃผ๊ธฐโ€๋ฅผ ๊ฑฐ์นœ๋‹ค.
์ด ํ๋ฆ„ ์ค‘๊ฐ„์ค‘๊ฐ„ ๊ฐœ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์ ์ด ์žˆ์œผ๋ฉฐ,
์ด๋ฅผ ๋ผ์ดํ”„์‚ฌ์ดํด ํ›… (Lifecycle Hooks) ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.


๐Ÿ“Š ๋ผ์ดํ”„์‚ฌ์ดํด ํ›… ์ „์ฒด ํ๋ฆ„

- lifecycle phases

beforeCreate โ†’ created โ†’ beforeMount โ†’ mounted โ†’ beforeUpdate โ†’ updated โ†’ beforeUnmount โ†’ unmounted

๊ฐ ํ›…์˜ ์—ญํ• ์„ ํ•˜๋‚˜์”ฉ ์ •๋ฆฌํ•ด๋ณด์ž.


๐Ÿงฑ ์ƒ์„ฑ ๋‹จ๊ณ„

1. beforeCreate()

  • ์ปดํฌ๋„ŒํŠธ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ดˆ๊ธฐํ™”๋˜๊ธฐ ์ง์ „ ํ˜ธ์ถœ

  • data, props, methods์— ์ ‘๊ทผ ๋ถˆ๊ฐ€

ํ”ํžˆ ์“ธ ์ผ์€ ๊ฑฐ์˜ ์—†์ง€๋งŒ, ๋””๋ฒ„๊น… ์šฉ๋„๋กœ ์œ ์šฉํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค.


2. created()

  • data, props, methods๊ฐ€ ์ดˆ๊ธฐํ™”๋œ ํ›„ ํ˜ธ์ถœ

  • API ํ˜ธ์ถœ, ์ดˆ๊ธฐ ๋กœ์ง ์„ค์ •์— ๋งŽ์ด ์‚ฌ์šฉ

created() {
  this.fetchInitialData()
}

๐Ÿ–ผ ๋งˆ์šดํŠธ ๋‹จ๊ณ„

3. beforeMount()

  • ๊ฐ€์ƒ DOM์ด ์ค€๋น„๋˜์—ˆ์ง€๋งŒ, ์‹ค์ œ DOM์— ๋ถ€์ฐฉ๋˜๊ธฐ ์ „ ํ˜ธ์ถœ

  • DOM ์กฐ์ž‘์€ ์•„์ง ๋ถˆ๊ฐ€


4. mounted()

  • ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์‹ค์ œ DOM์— ๋ Œ๋”๋ง๋œ ์ดํ›„ ํ˜ธ์ถœ

  • ref, ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—ฐ๋™ ๋“ฑ์— ํ™œ์šฉ

mounted() {
  this.initChart(this.$refs.chartContainer)
}

๐Ÿ” ์—…๋ฐ์ดํŠธ ๋‹จ๊ณ„

5. beforeUpdate()

  • ๋ฐ˜์‘ํ˜• ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด DOM ์—…๋ฐ์ดํŠธ๊ฐ€ ์ผ์–ด๋‚˜๊ธฐ ์ง์ „ ํ˜ธ์ถœ

  • ์ด์ „ ์ƒํƒœ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋กœ์ง์ด ์žˆ์„ ๋•Œ ์‚ฌ์šฉ


6. updated()

  • DOM ์—…๋ฐ์ดํŠธ๊ฐ€ ์™„๋ฃŒ๋œ ํ›„ ํ˜ธ์ถœ

  • UI ํ›„์ฒ˜๋ฆฌ ์ž‘์—…, ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ฒ˜๋ฆฌ ๋“ฑ์— ์œ ์šฉ


๐Ÿงน ์†Œ๋ฉธ ๋‹จ๊ณ„

7. beforeUnmount()

  • ์ปดํฌ๋„ŒํŠธ๊ฐ€ DOM์—์„œ ์ œ๊ฑฐ๋˜๊ธฐ ์ง์ „ ํ˜ธ์ถœ

  • ํƒ€์ด๋จธ ์ •๋ฆฌ, ์ด๋ฒคํŠธ ํ•ด์ œ ๋“ฑ ์ •๋ฆฌ ์ž‘์—…


8. unmounted()

  • ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์™„์ „ํžˆ ์†Œ๋ฉธ๋œ ํ›„ ํ˜ธ์ถœ

  • ์ •๋ฆฌ ํ™•์ธ์šฉ์œผ๋กœ ์‚ฌ์šฉ


โš ๏ธ Composition API์—์„œ๋Š”?

Vue 3์˜ <script setup> ๋˜๋Š” Composition API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด onMounted, onUpdated ๊ฐ™์€
ํ›… ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

<script setup>
import { onMounted } from 'vue'
 
onMounted(() => {
  console.log('์ปดํฌ๋„ŒํŠธ ๋งˆ์šดํŠธ ์™„๋ฃŒ!')
})
</script>

๐Ÿ’ก ์‹ค์ œ ์‚ฌ์šฉ ์˜ˆ์‹œ

  • API ํ˜ธ์ถœ: created ๋˜๋Š” onMounted

  • ์ฐจํŠธ, DOM ์กฐ์ž‘: mounted ๋˜๋Š” onMounted

  • ํƒ€์ด๋จธ ํ•ด์ œ: beforeUnmount

  • ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค ํ•ด์ œ: unmounted