Develop/SVELTE
스벨트[SVELTE] - 💯 라이브사이클(lifecycle) 알아보기
임성장
2024. 3. 13. 15:50
728x90
Svelte의 라이프 사이클
- beforeUpdate
- onMount
- afterUpdate
- onDestory
beforeUpdate
- 컴포넌트가 업데이트 되기 직전에 콜백함수가 실행될 수 있도록 스케줄링함.
- 서버 컴포넌트에서는 실행되지 않음.
import { beforeUpdate } from 'svelte';
beforeUpdate(() => {
console.log('컴포넌트가 업데이트 되기 직전입니다');
});
onMount
- DOM에 컴포넌트가 마운트 되자마자 콜백함수가 실행될 수 있도록 스케줄링함.
- 컴포넌트 초기화 중에 호출되어야 함.
- 외부 모듈에서 호출할 수 있음.
- 서버 컴포넌트에서는 실행되지 않음.
import { onMount } from 'svelte';
onMount(() => {
console.log('컴포넌트가 마운트되었습니다');
});
- 만약 onMount에서 반환된 함수가 있다면, 컴포넌트가 언마운트 될 때 해당 함수가 호출
- 아래는 onMount에 전달된 함수가 동기적으로 값을 반환하는 경우
- 비동기 함수는 항상 Promise를 반환하므로 동기적으로 함수를 반환할 수 없음.
import { onMount } from 'svelte';
onMount(() => {
const interval = setInterval(() => {
console.log('삐');
}, 1000);
return () => clearInterval(interval);
});
동기적(Synchronous): 작업이 완료될 때까지 다음 작업이 실행되지 않는 방식입니다. 즉, 하나의 작업이 완료되어야 다음 작업이 시작됩니다. 동기적 방식은 작업의 순서가 중요한 경우에 사용됩니다.
비동기적(Asynchronous): 작업이 완료되기 전에 다음 작업이 실행될 수 있는 방식입니다. 비동기적 방식에서는 작업이 완료되면 콜백 함수나 이벤트를 통해 결과를 반환합니다. 비동기적 방식은 작업이 오래 걸리는 경우나 여러 작업을 동시에 처리해야 하는 경우에 사용됩니다.
afterUpdate
- 컴포넌트가 업데이트된 후에 특정 작업을 실행하도록 스케줄링하는 함수
- "onMount" 함수가 실행된 후에 처음으로 실행됨.
- 어떠한 컴포넌트가 업데이트되면 무조건 실행됨.
- 서버 컴포넌트에서는 실행되지 않음.
- 활용 예시: UI 재렌더링, 데이터 동기화
<script>
import { afterUpdate } from 'svelte';
afterUpdate(() => {
console.log('the component just updated');
});
</script>
onDestroy
- 컴포넌트가 제거되기 직전에 특정 작업을 실행하도록 스케줄링하는 함수
- 서버 컴포넌트에서는 실행이 가능함.
<script>
import { onDestroy } from 'svelte';
onDestroy(() => {
console.log('the component is being destroyed');
});
</script>
728x90