-
Notifications
You must be signed in to change notification settings - Fork 8
useRequest
Junerver Hou edited this page Sep 12, 2024
·
18 revisions
useRequest 是一个功能丰富的异步数据管理的 Hooks,Compose 项目中的网络请求场景使用 useRequest 就够了。
useRequest 通过插件式组织代码,核心代码极其简单,并且可以很方便的扩展出更高级的功能。目前已有能力包括:
- 自动请求/手动请求
- 轮询
- 防抖
- 节流
- 错误重试
- loading delay
- SWR(stale-while-revalidate)
- 缓存
suspend fun mockRequestArticle(): MockArticle {
delay(2000L)
return MockArticle(Clock.System.now().toEpochMilliseconds(), NanoId.generate(200))
}
val (data, loading, error) = useRequest(
requestFn = {
mockRequestArticle()
}
)你只需要将在 requestFn 参数赋值一个lambda闭包,在这个闭包中调用一个suspend修饰的异步函数即可
在组件初次加载时,会自动触发该函数执行。同时自动管理该异步函数的 loading , data , error 等状态。
useRequest 的第二个参数是 options,你可以通过这个参数完成各种请求状态管理的配置。
如果设置了 options.manual = true,则 useRequest 不会默认执行,需要通过 run 来触发执行。
val (data, loading, error) = useRequest(
requestFn = {
mockRequestArticle()
},
optionsOf {
manual = true
}
)你可以使用顶层函数
optionsOf来方便的创建选项,这个函数支持多个hooks,在本项目中所有需要设置配置的场合都可以是用这个函数