Skip to content

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,在本项目中所有需要设置配置的场合都可以是用这个函数

Clone this wiki locally