首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rest调用应该以T形式返回数据,如果没有加载且没有错误

rest调用应该以T形式返回数据,如果没有加载且没有错误
EN

Stack Overflow用户
提问于 2022-03-16 10:26:40
回答 1查看 33关注 0票数 -1

当使用fetch在react钩子中发布数据时,是否可以推断如果完成了加载,并且没有错误,那么数据是否为null?

代码语言:javascript
复制
type apiReturn<T> = {
  data:T | null,
  loading:boolean,
  error?: Error
}
type message = {
  msg:string
}
const apiPost = <T>(body:T):apiReturn<T> => {
  const [state, setState] = useState<apiReturn<message>>({data:null,loading:true,error:undefined})

  useEffect(()=>{
     const httpCall = fetch(url,{...postrequest, body:body}).then((resp) => {
      if (resp.parsedBody === undefined){
         setState({ data:null,loading: false, error:new Error("Oops... Something went wrong!") });
      }
      setState({ data:response.parsedBody,loading: false });
     
  },[fetch,setState])
  return state
}
const usePost = (data:message) => {
  const apiresponse = apiPost(data)
  if(!apiresponse.loading && apiresponse.error === undefined)
    //Possibly undefined, but should be defined as everything went okey
    const test:message = apiresponse.data
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-16 10:41:57

您可以使用歧视结合

代码语言:javascript
复制
type ApiReturn<T> = {
  loading: true,
} | {
  loading: false,
  error?: undefined,
  data: T,
} | {
  loading: false,  
  error: Error,
  data?: null,
}
type message = {
  text: string
}
const apiPost = <T extends object>(body: T): ApiReturn<T> => {
  return null! // Implementation here
}


const usePost = (data: message) => {
  const apiresponse = apiPost(data)
  if (!apiresponse.loading && apiresponse.error === undefined) {
    const test: message = apiresponse.data
  }
}

操场连接

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71495403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档