createUseFetch
createUseFetch создаёт кастомный композабл useFetch с заданными опциями. Результат полностью типизирован и ведёт себя как useFetch, но с вашими значениями по умолчанию.
createUseFetch — макрос компилятора. Его нужно использовать как экспортируемое объявление в каталоге composables/ (или в любом каталоге, сканируемом компилятором Nuxt). Nuxt автоматически подставляет ключи дедупликации на этапе сборки.Использование
export const useAPI = createUseFetch({
baseURL: 'https://api.nuxt.com',
})
<script setup lang="ts">
const { data: modules } = await useAPI('/modules')
</script>
Получившийся композабл useAPI имеет ту же сигнатуру и тип возврата, что и useFetch; вызывающий код может использовать или переопределять любые опции.
Тип
function createUseFetch (
options?: Partial<UseFetchOptions>,
): typeof useFetch
function createUseFetch (
options: (callerOptions: UseFetchOptions) => Partial<UseFetchOptions>,
): typeof useFetch
Опции
createUseFetch принимает те же опции, что и useFetch: baseURL, headers, query, onRequest, onResponse, server, lazy, transform, getCachedData и другие.
Полный список опций см. в документации useFetch.
Режим по умолчанию и режим переопределения
Режим по умолчанию (обычный объект)
При передаче обычного объекта опции фабрики выступают как значения по умолчанию. Вызывающий код может переопределить любую опцию:
export const useAPI = createUseFetch({
baseURL: 'https://api.nuxt.com',
lazy: true,
})
// Используется baseURL по умолчанию
const { data } = await useAPI('/modules')
// Вызывающий переопределяет baseURL
const { data } = await useAPI('/modules', { baseURL: 'https://other-api.com' })
Режим переопределения (функция)
При передаче функции опции фабрики переопределяют опции вызывающего. Функция получает опции вызывающего аргументом, так что по ним можно вычислить свои переопределения:
// baseURL всегда задаётся фабрикой, независимо от того, что передал вызывающий
export const useAPI = createUseFetch(callerOptions => ({
baseURL: 'https://api.nuxt.com',
}))
Это удобно для жёсткой настройки заголовков авторизации или базового URL, которые не должны меняться вызывающим кодом.
Совместное использование с кастомным $fetch
В createUseFetch можно передать кастомный экземпляр $fetch:
export const useAPI = createUseFetch({
$fetch: useNuxtApp().$api as typeof $fetch,
})