hooks useRequest 导出配置是否可以加一下 configContext

ivqmmu1c  于 2022-11-06  发布在  其他
关注(0)|答案(6)|浏览(133)

需求:自己封装一个组件,使用useRequest 发请求,想要获取全局配置,做一些默认处理,但是库中没有导出configContext配置选项,所以没法获取全局配置;

注:可以在包下的lib、es中获取到configContext但是在不同的环境可能会出现导入错误的configContext而获取不到全局配置

svmlkihl

svmlkihl1#

你可以不用全局配置,改为基于 useRequest 封装一个 Hooks。

chhkpiq4

chhkpiq42#

比如使用场景:开发一个react公用组件,这个组件要用useRequest发起一个请求,因为是一个公用组件,所以不知道请求的响应格式是什么,虽然可以接收一个formatResult处理函数,但是如果用的地方多了,就需要做重复工作,但是如果有导出configContext配置,只需要接收一下全局配置就行;这种场景可以自己构建一个context来添加全局配置,但是我觉得,如果能使用useRequest的全局配置会更好一些

vql8enpb

vql8enpb3#

再补充一个应用场景:@umijs/plugin-request 插件的 formatResult配置提供了默认配置 (res => res?.data),因为没有接受全局配置,所以@umijs/plugin-request 插件的formatResult将无法全局设置formatResult,只能通过全局配置一个dataField字段值,但我们有个项目返回数据主体字段是 resultObj、resultObjs,无法通过dataField配置,因此项目中出现了无数的 formatResult: res => res?.resultObj(s) 这样的配置;

nkcskrwz

nkcskrwz4#

自己封装一个 Hooks 可以解决你的问题吧?

const useNewReqeust = (service, options)=>{
   return useRequest(service, {
      formatResult: (r)=> r,
      ...options,
  })
}
fcwjkofz

fcwjkofz5#

自己封装一个 Hooks 可以解决你的问题吧?

const useNewReqeust = (service, options)=>{
   return useRequest(service, {
      formatResult: (r)=> r,
      ...options,
  })
}

就拿你给的这个demo举例,我写了这么一个自定义hooks,封装了一些自定义逻辑供被人使用,但是我不知道用的人服务端数据结构,formResult只能给个常用的默认值,因为封装的逻辑要用到formResult,所以不能留空,这样如果formResult不符合用户的数据结构,所以只能在每次使用这个自定义hooks是配置一下formatResult选项了

vktxenjb

vktxenjb6#

这个问题,我还是自己创建一个context配置,来自定义全局配置吧;不用useRequest提供的全局配置

相关问题