Fetch

class Fetch<TData : Any>(options: RequestOptions<TData> = RequestOptions()) : IFetch<TData>

Constructors

Link copied to clipboard
constructor(options: RequestOptions<TData> = RequestOptions())

Properties

Link copied to clipboard
lateinit var dataState: State<TData?>

请求结果的封装,最终类型会通过泛型TData对外暴露成正确的类型

Link copied to clipboard
lateinit var errorState: State<Throwable?>

useRequest中的requestFn函数进行try-catch

Link copied to clipboard
lateinit var fetchState: FetchState<TData>
Link copied to clipboard
lateinit var loadingState: State<Boolean>

请求是否正在发起尚未响应结果。

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
lateinit var requestFn: SuspendNormalFunction<TData>

真实的retrofit请求函数 - 的 - 包装函数

Link copied to clipboard
var run: VoidFunction
Link copied to clipboard
var runAsync: SuspendVoidFunction

由于js非常灵活,可以动态的替换实例的方法,这一点在kotlin时无法完成的,所以我们通过 实例属性来达成这一效果,所有的原始方法通过_前缀来标识,对外方法通过属性来达成。

Link copied to clipboard
lateinit var setData: (TData?) -> Unit
Link copied to clipboard
lateinit var setError: (Throwable?) -> Unit
Link copied to clipboard
lateinit var setLoading: (Boolean) -> Unit

Functions

Link copied to clipboard
open override fun _run(params: TParams)

使用自身作用域的同步请求函数

Link copied to clipboard
open suspend override fun _runAsync(params: TParams)

异步请求函数,需要注意调用取消时将无法自动取消请求, 因为请求发生在调用者自己的作用域,而非Fetch实例所在的作用域。

Link copied to clipboard
open override fun cancel()

取消请求

Link copied to clipboard
open override fun mutate(mutateFn: (TData?) -> TData)

直接修改状态

Link copied to clipboard
open override fun refresh()

刷新请求

Link copied to clipboard
open suspend override fun refreshAsync()

异步刷新

Link copied to clipboard
fun setState(vararg pairs: Pair<String, Any?>)
fun setState(map: Map<String, Any?>)