Skip to content

useRequest文档

简介

useRequest是一个Vue composable,用于实现在组件中发起请求,并提供了loading等功能。

使用方法

ts
useRequest(fetchFn, options)
ts
import { useRequest } from 'useRequest'

// 定义请求方法,比如:
function fetchFn(id: number) {
  return axios.get(`/api/user/${id}`)
}

const { data, execute, isLoading } = useRequest(fetchFn)

// 默认情况下加载该hook时就会自动触发请求,也可通过调用execute主动发起请求
async function getUser(id) {
  await execute(id)
}

请求返回数据的几种处理方法

1、直接使用hook的data

vue
<script setup>
const { data, execute, isLoading } = useRequest(fetchFn)
</script>

<template>
  <div>{{ data }}</div>
</template>

2、execute的返回值

vue
<script setup>
const { execute, isLoading } = useRequest(fetchFn)

execute().then(result => console.log(result))
</script>

API

参数

参数说明类型默认值
fetchFn请求的函数(...args: any[]) => Promise<any>-
options.immediate在组件加载后是否自动触发请求booleantrue
options.shallow是否使用shallowRefbooleantrue
options.onError错误回调函数functionundefined
options.onSuccess成功回调函数functionundefined

Return

属性说明类型
data请求的数据Ref<T | undefined>
error请求的错误信息ShallowRef<unknown | undefined>
isFinished请求是否完成Ref<boolean>
isLoading请求是否在加载中Ref<boolean>
execute手动触发请求的函数(...args: any) => PromiseLike<UseRequestReturn<T>>