MCPcopy
hub / github.com/nuxt/nuxt / useFetch

Function useFetch

packages/nuxt/src/app/composables/fetch.ts:176–278  ·  view source on GitHub ↗
(
      request: Ref<ReqT> | ReqT | (() => ReqT),
      arg1?: string | UseFetchOptions<_ResT, DataT, PickKeys, DefaultT, ReqT, Method>,
      arg2?: string,
    )

Source from the content-addressed store, hash-verified

174 opts?: UseFetchOptions<_ResT, DataT, PickKeys, DefaultT, ReqT, Method>,
175 ): AsyncData<PickFrom<DataT, [Array<never>] extends [FPickKeys] ? PickKeys : FPickKeys & KeysOf<DataT>> | DefaultT, ErrorT | undefined>
176 function useFetch<
177 ResT = void,
178 ErrorT = FetchError,
179 ReqT extends NitroFetchRequest = NitroFetchRequest,
180 Method extends AvailableRouterMethod<ReqT> = ResT extends void ? 'get' extends AvailableRouterMethod<ReqT> ? 'get' : AvailableRouterMethod<ReqT> : AvailableRouterMethod<ReqT>,
181 _ResT = ResT extends void ? FetchResult<ReqT, Method> : ResT,
182 DataT = _ResT,
183 PickKeys extends KeysOf<DataT> = KeysOf<DataT>,
184 DefaultT = undefined,
185 > (
186 request: Ref<ReqT> | ReqT | (() => ReqT),
187 arg1?: string | UseFetchOptions<_ResT, DataT, PickKeys, DefaultT, ReqT, Method>,
188 arg2?: string,
189 ) {
190 const [opts = {}, autoKey] = typeof arg1 === 'string' ? [{}, arg1] : [arg1, arg2]
191
192 const factoryOptions = (typeof options === 'function' ? options(opts as any) : options) as typeof opts
193
194 // Merge factory options with user options:
195 // - defaults mode (plain object): factory < user opts (factory provides defaults)
196 // - override mode (function): user opts < factory (factory overrides user opts)
197 const {
198 server,
199 lazy,
200 default: defaultFn,
201 transform,
202 pick,
203 watch: watchSources,
204 immediate,
205 getCachedData,
206 deep,
207 dedupe,
208 timeout,
209 ...fetchOptions
210 } = {
211 ...(typeof options === 'function' ? {} : factoryOptions),
212 ...opts,
213 ...(typeof options === 'function' ? factoryOptions : {}),
214 }
215
216 const _request = computed(() => toValue(request))
217
218 const key = computed(() => toValue(fetchOptions.key) || ('$f' + hash([autoKey, typeof _request.value === 'string' ? _request.value : '', ...generateOptionSegments(fetchOptions)])))
219
220 if (!fetchOptions.baseURL && typeof _request.value === 'string' && (_request.value[0] === '/' && _request.value[1] === '/')) {
221 throw new Error('[nuxt] [useFetch] the request URL must not start with "//".')
222 }
223
224 const _fetchOptions = reactive<typeof fetchOptions>({
225 ...fetchDefaults,
226 ...fetchOptions,
227 cache: typeof fetchOptions.cache === 'boolean' ? undefined : fetchOptions.cache,
228 })
229
230 const _asyncDataOptions: AsyncDataOptions<_ResT, DataT, PickKeys, DefaultT> = {
231 server,
232 lazy,
233 default: defaultFn,

Callers 6

use-fetch.test.tsFile · 0.90
createScopeFunction · 0.90
setupFunction · 0.85
useCounterFunction · 0.85
app-types.tsFile · 0.85

Calls 4

useAsyncDataFunction · 0.90
useRequestFetchFunction · 0.90
generateOptionSegmentsFunction · 0.85
watchFunction · 0.85

Tested by 1

createScopeFunction · 0.72

Used in the wild real call sites across dependent graphs

searching dependent graphs…