Nuxt3 $fetch, useAsyncData, useFetch 차이 정리
<script setup lang="ts">
const data = ref();
const testFetch = async () => {
const result = await $fetch<number>("/api/temp");
data.value = result;
};
</script>
<script setup lang="ts">
const { data, refresh } = await useAsyncData<number>("useAsyncDataTest", () => $fetch("/api/temp"));
</script>
<script setup lang="ts">
const { data, refresh } = await useFetch<number>("/api/temp", { key: "useFetchTest" });
</script>
| 항목 | $fetch | useAsyncData | useFetch |
|---|---|---|---|
| SSR 지원 | 클라이언트 전용 | 서버/클라이언트 모두 가능 | 서버/클라이언트 모두 가능 |
| 초기 데이터 패칭 | 부적합 | 적합 (Top-level await 지원) | 적합하지만 freezing 문제 있음 |
| 중복 호출 방지 | 없음 | key 기반 캐싱 | key 기반 캐싱 |
| 자동 반응성 | 없음 | 직접 콜백 호출 필요 | 반응성 객체 변화 감지 후 자동 호출 |
| 적합한 상황 | 사용자 인터랙션 기반 요청 (POST 등) | 페이지 초기 렌더링 데이터 패칭 | 간단한 초기 데이터 패칭 (동적 값 변동이 없는 경우) |
1. Nuxt3에서 Axios 대신 ofetch를 선택한 이유는 무엇인가?
2. 왜 useFetch는 동적 데이터 변화를 반영하지 못하는가?
3. Server Side Rendering(SSR)에서 데이터 패칭 시 주의할 점은?