Skip to content

useSend & XRequest 🌳

背景介绍

基于 ant-design-xXRequestXStream,我们进行了深入的学习和讨论。

在复刻 XStream 后,针对更通用的 控制请求数据中断请求 的场景,我们将 ant-design-xXRequest 进行了重构,将其拆分成 前端终止场景请求终止场景

两种场景 分别对应

  • hooks useSend -- 前端终止场景
  • 工具类 XRequest -- 请求终止场景

🍒 两者可以单独拆开使用,组合使用可实现 useXStream,下面是他们的使用示例

代码演示

只需要传一个 开始方法 ,即可获得 对应的 loading 状态,以及 对应的 finish 方法。

单个控制,代码不超过 10 行

这个案例可以很好看出,这个 hooks 不与后端请求做交互,只是控制简单的 loading 状态。

send 方法 触发 sendHandler 回调 finish 方法 结束 loading 状态

有了对状态的控制,我们可以很方便的,自定义一些按钮的加载状态

sendHandlerabortHandler 是两个函数,分别对应 开始中断 的回调。

abort 方法 触发 abortHandler 回调

abort 方法 同时也会 结束 loading 状态

知道了 useSend 的基本用法后,既然有 前端加载状态 的控制,那一定少不了 请求状态 控制。接下来我们来介绍一下 工具类 XRequest 的简单用法。

这样你就简单的使用 XRequest 控制了 请求的发起 和 中断请求中的状态。 简单的 new XRequest(),实例化对象,然后 .send() 开始请求, .abort() 停止请求。

我们可以在 控制台 查看到,流式请求 请求被终止

📌 注意

这里我们为了让大家方便阅读文档,看到请求,简单的写了一个 node 服务。这个案例中,💩 请不要疯狂点击。会疯狂请求接口,请大家节制一点。💩 我们没做任何安全处理 🙉 因为不会

这也可以反向让大家知道更了解,工具类 XRequest 的用法,只对 请求 处理。

new XRequest() 中传入对应的配置项

transformer 可以对内应的响应数据进行转换处理,还提供了很多配置的 回调方法,供开发者使用。

大家也可在 控制台 查看 回调方法的打印

下面介绍一下,useSenduseSendStream 相互结合的用法

使用 useSend 对前端进行状态控制,使用 useSendStream 对后端进行状态控制

配置参数 和 返回钩子

- useSend

  • 参数
参数名说明类型
sendHandlersend 方法() => void
abortHandlerabort 方法() => void
  • 返回值
属性名说明类型
send开始 加载状态 支持回调() => void
abort中断 加载状态 支持回调() => void
loading加载状态boolean
finish结束 加载状态() => void

- XRequest

  • 参数
配置参数名说明类型
baseURL基础请求地址string
type请求类型,默认 SSEBaseSSEProps<T = string>.type?: SSEType | undefined
transformertransformer 回调,在这里可以对数据做解析处理(e: string) => string | undefined
onMessage请求中的回调(msg: string | undefined) => void
onError请求报错的回调(es: EventSource, e: Event) => void
onOpenSSE Open 状态SSEWithSSEProps.onOpen?: (() => void) | undefined
onAbort请求被终止的回调(messages: (string | undefined)[]) => void
onFinish请求结束的回调(data: (string | undefined)[]) => void
  • 返回值
属性名说明类型
send开始请求接口XRequest<string | undefined>.send(url: string, options?: EventSourceInit | BaseFetchOptions): Promise<XRequest<string | undefined>>
abort中断请求XRequest<string | undefined>.abort(): void

总结

useSend 可以让用户更方便在前端展示和控制, 加载中 状态。是一种对 loading 状态的封装方案 接受 发送回调 和一个中断回调 ,提供 发送中断 loading 状态结束 loading 状态 ,返回 loading 状态。

XRequest 是一个请求的封装,提供了更便捷的请求方式,接受一个 请求配置 ,返回一个 请求响应 对象。