Skip to content

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처럼 라우트 객체에서 무엇이 사용되는지 추적해야 할까요?

모두를 위한 문서 한글화