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

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

const {
    
    data:categorys}=useRequest(async () => {
    
    
   	const result=await Category.getAll()
    const categorys={
    
    } as any
    result.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 any
    result.data?.forEach(category => categorys[category.id as number]={
    
    text:category.name})
    return {
    
    data:categorys}
})

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

猜你喜欢

转载自blog.csdn.net/woshihedayu/article/details/135306518