defineBasicLoader()
내비게이션 시 항상 다시 실행되는 기본 데이터 로더입니다.
WARNING
Data Loaders는 실험적 기능입니다. Vue Router에서 데이터 로더의 미래를 만들어 가기 위한 피드백을 언제나 환영합니다.
설정
예제
vue
<script lang="ts">
import { defineBasicLoader } from 'vue-router/experimental'
import { getUserById } from '../api'
export const useUserData = defineBasicLoader(
(to, { signal }) => {
return getUserById(to.params.id, { signal })
},
{
// SSR에서만 사용됩니다
key: 'user-data',
}
)
</script>
<script lang="ts" setup>
const route = useRoute('/users/[id]')
const {
user,
error
isLoading,
reload,
} = useUserData()
</script>
<template>
<main>
<h1>Basic Data Loader Example</h1>
<pre>User: {{ route.params.id }}</pre>
<fieldset>
<legend>Controls</legend>
<button @click="reload()">Refetch</button>
</fieldset>
<RouterLink :to="{ params: { id: Number(route.params.id) || 0 - 1 } }"
>Previous</RouterLink
>
|
<RouterLink :to="{ params: { id: Number(route.params.id) || 0 + 1 } }"
>Next</RouterLink
>
<h2>State</h2>
<p>
<code>isLoading: {{ isLoading }}</code>
</p>
<pre v-if="error">Error: {{ error }}</pre>
<pre v-else>{{ user == null ? String(user) : user }}</pre>
</main>
</template>SSR
Nuxt
미해결 질문
- 이 기본 버전도 Svelte Data Loaders처럼 라우트 객체에서 무엇이 사용되는지 추적해야 할까요?