ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

使用umi中的useRequest函数获取返回值中的data为空的问题

2026/9/29 13:06:12 拓冰建站 浏览量
使用umi中的useRequest函数获取返回值中的data为空的问题

umi是一个react脚手架,最近有一个功能,需要在组件第一次渲染前请求一次,后面组件重新渲染不需要再次发送请求。要实现这种功能,我决定使用umi里面的一个hook函数,即useRequest。请求代码如下

const {data:categorys}=useRequest(async () => {const result=await Category.getAll()const categorys={} as anyresult.data?.forEach(category => categorys[category.id as number]={text:category.name})return categorys
})

结果发现,categorys值始终为undefined,也就是说,useRequest返回对象的data属性始终为undefined。
后来经过反复尝试,发现useRequest函数传入的第一个参数必须是一个异步函数,并且这个异步函数的返回值必须是一个包含data属性的对象,否则封装后的响应数据就获取不到。修改后的代码如下

const {data:categorys}=useRequest(async () => {const result=await Category.getAll()const categorys={} as anyresult.data?.forEach(category => categorys[category.id as number]={text:category.name})return {data:categorys}
})

返回值改成{data:categorys}就可以了