Skip to content

useAxios

类别
导出大小
1.28 kB
@vueuse/integrations
最近修改
2 days ago

axios 的封装器。

🌐 Wrapper for axios.

示例

Loading: true
Finished: false
Aborted: false
Available in the @vueuse/integrations add-on.

安装

🌐 Install

bash
npm i axios@^1

用法

🌐 Usage

ts
import { 
useAxios
} from '@vueuse/integrations/useAxios'
const {
data
,
isFinished
} =
useAxios
('/api/posts')

返回值

🌐 Return Values

属性类型描述
dataRef<T>响应数据
responseRef<AxiosResponse>完整的 axios 响应
errorRef<unknown>如果请求失败的错误
isFinishedRef<boolean>请求已完成(成功或错误)
isLoadingRef<boolean>请求正在进行中
isAbortedRef<boolean>请求已被中止
abort / cancel() => void中止当前请求
execute(url?, config?) => Promise执行/重新执行请求

使用 Axios 实例

🌐 With Axios Instance

ts
import { 
useAxios
} from '@vueuse/integrations/useAxios'
import
axios
from 'axios'
const
instance
=
axios
.
create
({
baseURL
: '/api',
}) const {
data
,
isFinished
} =
useAxios
('/posts',
instance
)

带配置选项

🌐 With Config Options

ts
import { 
useAxios
} from '@vueuse/integrations/useAxios'
import
axios
from 'axios'
const
instance
=
axios
.
create
({
baseURL
: '/api',
}) const {
data
,
isFinished
} =
useAxios
('/posts', {
method
: 'POST' },
instance
)

手动执行

🌐 Manual Execution

当你不传 url 时,请求不会立即发出:

🌐 When you don't pass a url, the request won't fire immediately:

ts
import { 
useAxios
} from '@vueuse/integrations/useAxios'
const {
execute
} =
useAxios
()
execute
(url)

execute 函数 url 是可选的 - url2 将替代 url1

🌐 The execute function url is optional - url2 will replace url1:

ts
import { 
useAxios
} from '@vueuse/integrations/useAxios'
const {
execute
} =
useAxios
(url1, {}, {
immediate
: false })
execute
(url2)

execute 函数只能接受配置:

🌐 The execute function can accept config only:

ts
import { 
useAxios
} from '@vueuse/integrations/useAxios'
const {
execute
} =
useAxios
(url1, {
method
: 'GET' }, {
immediate
: false })
execute
({
params
: {
key
: 1 } })
execute
({
params
: {
key
: 2 } })

等待结果

🌐 Awaiting Results

返回值是可等待的,所以你可以使用 await:

🌐 The return value is thenable, so you can await it:

ts
import { 
useAxios
} from '@vueuse/integrations/useAxios'
const {
data
,
isFinished
,
error
} = await
useAxios
('/api/posts')
// data is now populated

或者等待执行函数:

🌐 Or await the execute function:

ts
import { 
useAxios
} from '@vueuse/integrations/useAxios'
const {
execute
} =
useAxios
()
const
result
= await
execute
(url)

选项

🌐 Options

ts
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'),
})