created와 mounted의 차이점

Vue.js를 개발하다 보면, createdmounted를 사용하는 경우가 있을 겁니다.

이 둘은 Vue 컴포넌트 생명주기의 특정 단계에서 호출되는 훅인데요. 적절한 상황에 이 훅들을 사용할 수 있도록 created와 mounted의 차이점에 대해 알아봅시다.

 


1. created

created 훅은 Vue 컴포넌트가 생성된 직후에 호출됩니다.

이는 컴포넌트의 데이터 옵션(data, computed, methods 등)가 초기화 된 상태에요.

또한, DOM이 아직 준비되지 않은 상태에서 실행하기 때문에 아직 DOM에 접근할 수 없습니다.

그렇기에 created 훅은 화면 렌더링과 관계없는 로직에 사용해야 해요.

 

createdVue 컴포넌트가 생성되면 먼저 data, props, methods, computed 등이 정의되고 반응형으로 초기화 된 , created 훅이 호출됩니다.

 

created비동기 데이터 호출 or 초기 데이터 설정에 주로 사용됩니다.

 

예를 한번 들어볼께요.

<template>
  <div>
    <h1>{{ message }}</h1>
    <ul>
      <li v-for="item in items" :key="item.id">{{ item.name }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello, Vue!',
      items: []
    };
  },
  created() {
    // API 호출 예시
    this.fetchData();
  },
  methods: {
    fetchData() {
      // 예시로 간단한 데이터
      this.items = [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' },
        { id: 3, name: 'Item 3' }
      ];
      
      // 실제로는 axios나 fetch를 사용하여 API에서 데이터를 불러올 수 있음
      // axios.get('https://api.example.com/items')
      //   .then(response => {
      //     this.items = response.data;
      //   });
    }
  }
};
</script>

 

위 코드처럼 created 훅은 컴포넌트가 생성될 때, fetchData 메서드를 호출하여, 초기 데이터를 설정해요. 이렇게 하면, 페이지가 로드되자마자 필요한 데이터를 준비할 수 있습니다.

 


2. mounted

mounted 훅은 Vue가 데이터를 바인딩하고 템플릿을 렌더링하여 DOM을 생성하면, 이 DOM실제 HTML 문서에 삽입된 후, 호출됩니다.

this.$el을 사용하여 컴포넌트의 루트 DOM 엘리먼트에 접근이 가능하며, 초기화된 DOM에 대해 조작을 수행할 수 있어요.

또한, 차트 라이브러리 or 슬라이더 같은 플러그인을 DOM에 적용할 수 있습니다.

 

하지만, 렌더링 시간이 길어지는 작업은 피해야 합니다. mounted 훅이 DOM실제 HTML 문서에 삽입하는 과정길어져, 화면이 늦게 보일 수 있어요.

 

예를 들어보겠습니다.

<template>
  <div>
    <h1>{{ title }}</h1>
    <div ref="myElement">이 요소에 대해 작업을 수행</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      title: 'Mounted 예시'
    };
  },
  mounted() {
    // DOM 조작 예시
    this.$refs.myElement.style.color = 'blue';
    this.$refs.myElement.textContent += ' (mounted 후 수정)';

    // 외부 라이브러리 초기화 예시
    // 예를 들어, jQuery 플러그인을 사용하고 싶을 때
    // $(this.$refs.myElement).somePlugin();
  }
};
</script>

 

위 코드에서 mounted 훅은 컴포넌트가 DOM에 마운트된 후, myElement라는 참조를 통해 해당 요소의 스타일과 내용을 수정해요. 이렇게 하면, DOM 요소에 직접 접근하고 조작할 수 있습니다.

 


3. created와 mounted의 차이점

그러면 이제 이 둘의 차이점에 대해 알아봐야 겠죠.

createdmounted호출 순서의 차이가 있습니다.

created먼저 호출된 다음에 mounted호출됩니다.

 

또한, 전에 언급했다 시피 created 훅은 주로 컴포넌트의 초기 상태를 설정하거나, 데이터를 불러오는 데 사용됩니다.

mounted 훅은 DOM 기반 작업과 타사 라이브러리 초기화에 적합해요.

 


4. 정리하며

지금까지 createdmounted차이에 대해 알아보았습니다.

이 두 훅의 역할을 명확히 구분하면, 성능과 유지보수성 모두 개선될 수 있어요. 

'Front-End Study > Vue.js' 카테고리의 다른 글

computed와 methods의 차이  (0) 2024.11.08
router-link와 router-view  (3) 2024.11.07
v-if와 v-show의 차이  (1) 2024.11.05
Event Bus  (0) 2024.10.29
scrollBehavior  (0) 2024.10.22