packages/integrations/useAxios/index.md
Wrapper for axios.
npm i axios@^1
import { useAxios } from '@vueuse/integrations/useAxios'
const { data, isFinished } = useAxios('/api/posts')
| Property | Type | Description |
|---|---|---|
data | Ref<T> | Response data |
response | Ref<AxiosResponse> | Full axios response |
error | Ref<unknown> | Error if request failed |
isFinished | Ref<boolean> | Request has completed (success or error) |
isLoading | Ref<boolean> | Request is in progress |
isAborted | Ref<boolean> | Request was aborted |
abort / cancel | () => void | Abort the current request |
execute | (url?, config?) => Promise | Execute/re-execute the request |
import { useAxios } from '@vueuse/integrations/useAxios'
import axios from 'axios'
const instance = axios.create({
baseURL: '/api',
})
const { data, isFinished } = useAxios('/posts', instance)
import { useAxios } from '@vueuse/integrations/useAxios'
import axios from 'axios'
const instance = axios.create({
baseURL: '/api',
})
const { data, isFinished } = useAxios('/posts', { method: 'POST' }, instance)
When you don't pass a url, the request won't fire immediately:
import { useAxios } from '@vueuse/integrations/useAxios'
const { execute } = useAxios()
execute(url)
The execute function url is optional - url2 will replace url1:
import { useAxios } from '@vueuse/integrations/useAxios'
const { execute } = useAxios(url1, {}, { immediate: false })
execute(url2)
The execute function can accept config only:
import { useAxios } from '@vueuse/integrations/useAxios'
const { execute } = useAxios(url1, { method: 'GET' }, { immediate: false })
execute({ params: { key: 1 } })
execute({ params: { key: 2 } })
The return value is thenable, so you can await it:
import { useAxios } from '@vueuse/integrations/useAxios'
const { data, isFinished, error } = await useAxios('/api/posts')
// data is now populated
Or await the execute function:
import { useAxios } from '@vueuse/integrations/useAxios'
const { execute } = useAxios()
const result = await execute(url)
const { data } = useAxios('/api/posts', config, instance, {
// Execute immediately (default: true if url provided)
immediate: true,
// Use shallowRef for data (default: true)
shallow: true,
// Abort previous request on new execute (default: true)
abortPrevious: true,
// Reset data before executing (default: false)
resetOnExecute: false,
// Initial data value
initialData: [],
// Callbacks
onSuccess: data => console.log('Success:', data),
onError: error => console.error('Error:', error),
onFinish: () => console.log('Finished'),
})