useNuxtData
데이터 페칭 컴포저블의 현재 캐시된 값을 액세스합니다.
useNuxtData
는 명시적으로 제공된 키를 사용하여 useAsyncData
, useLazyAsyncData
, useFetch
및 useLazyFetch
의 현재 캐시된 값에 액세스할 수 있게 해줍니다.
사용법
useNuxtData
컴포저블은 useAsyncData
, useLazyAsyncData
, useFetch
, useLazyFetch
와 같은 데이터 페칭 컴포저블의 현재 캐시된 값에 액세스하는 데 사용됩니다. 데이터 페칭 시 사용된 키를 제공함으로써 캐시된 데이터를 검색하고 필요에 따라 사용할 수 있습니다.
이는 이미 페칭된 데이터를 재사용하거나 Optimistic Updates 또는 계단식 데이터 업데이트와 같은 기능을 구현하여 성능을 최적화하는 데 특히 유용합니다.
useNuxtData
를 사용하려면 데이터 페칭 컴포저블(useFetch
, useAsyncData
등)이 명시적으로 제공된 키와 함께 호출되었는지 확인해야 합니다.
매개변수
key
: 캐시된 데이터를 식별하는 고유한 키입니다. 이 키는 원래 데이터 페칭 시 사용된 키와 일치해야 합니다.
반환 값
data
: 제공된 키와 연관된 캐시된 데이터에 대한 반응형 참조입니다. 캐시된 데이터가 없으면 값은null
이 됩니다. 이Ref
는 캐시된 데이터가 변경되면 자동으로 업데이트되어 컴포넌트에서 원활한 반응성을 제공합니다.
예제
아래 예제는 서버에서 최신 데이터를 페칭하는 동안 캐시된 데이터를 플레이스홀더로 사용하는 방법을 보여줍니다.
// 'posts' 키를 사용하여 나중에 동일한 데이터에 액세스할 수 있습니다.
const { data } = await useFetch('/api/posts', { key: 'posts' })
// posts.vue (상위 경로)에서 useFetch의 캐시된 값에 액세스합니다.
const { data: posts } = useNuxtData('posts')
const route = useRoute()
const { data } = useLazyFetch(`/api/posts/${route.params.id}`, {
key: `post-${route.params.id}`,
default() {
// 캐시에서 개별 게시물을 찾아 기본값으로 설정합니다.
return posts.value.find(post => post.id === route.params.id)
}
})
Optimistic Updates
아래 예제는 useNuxtData를 사용하여 Optimistic Updates를 구현하는 방법을 보여줍니다.
Optimistic Updates는 서버 작업이 성공할 것이라고 가정하여 사용자 인터페이스를 즉시 업데이트하는 기술입니다. 작업이 실패할 경우 UI는 이전 상태로 롤백됩니다.
// 'todos' 키를 사용하여 나중에 동일한 데이터에 액세스할 수 있습니다.
const { data } = await useAsyncData('todos', () => $fetch('/api/todos'))
const newTodo = ref('')
let previousTodos = []
// todos.vue에서 useAsyncData의 캐시된 값에 액세스합니다.
const { data: todos } = useNuxtData('todos')
async function addTodo () {
return $fetch('/api/addTodo', {
method: 'post',
body: {
todo: newTodo.value
},
onRequest () {
// 페칭 실패 시 복원할 수 있도록 이전에 캐시된 값을 저장합니다.
previousTodos = todos.value
// 낙관적으로 todos를 업데이트합니다.
todos.value = [...todos.value, newTodo.value]
},
onResponseError () {
// 요청이 실패하면 데이터를 롤백합니다.
todos.value = previousTodos
},
async onResponse () {
// 요청이 성공하면 백그라운드에서 todos를 무효화합니다.
await refreshNuxtData('todos')
}
})
}
타입
useNuxtData<DataT = any> (key: string): { data: Ref<DataT | undefined> }
※이 페이지는 Nuxt.js 공식 문서의 비공식 번역 페이지입니다.
공식 문서의 해당 페이지는 여기 있습니다:
https://nuxt.com/docs/3.x/api/composables/use-nuxt-data