Skip to content

useMultiAsyncData

作为 useAsyncData 的批量版,可以一次性从异步任务中获取多个状态

Usage

ts
import { 
useMultiAsyncData
} from '@vrx/core'
const { // 执行异步方法
execute
,
// 是否正在加载
loading
,
// 是否发生错误
error
,
// 状态对应multi选项中对应的key值
roleList
,
// 状态对应multi选项中对应的key值
userList
,
} =
useMultiAsyncData
((
params
) =>
fetch
('https://localhost', {
body
:
JSON
.
stringify
(
params
) }), {
// 是否在 onMounted 生命周期自动执行一次,注意,自动执行时,无法传递参数
immediate
: true,
// 是否使用 shallowRef 包装状态
shallow
: true,
// 是否在每次请求前调用 initData 重置数据
resetBeforeExecute
: true,
// 批量获取异步任务状态配置
multi
: {
roleList
: {
// 内部状态初始化
initData
: () => [],
// 获取数据的字符串路径
path
: 'res.data.roleList',
/** * 在 `execute` 返回值为 `null|undefined` 时 重置数据 */
resetOnDataNil
: true,
},
userList
: {
// 内部状态初始化
initData
: () => [],
// 获取数据的字符串路径
path
: 'res.data.userList',
/** * 在 `execute` 返回值为 `null|undefined` 时 重置数据 */
resetOnDataNil
: true,
}, }, })

Type Declarations

ts
type UseMultiAsyncDataMulti<Data extends Record<string, any> = any> = {
  [Key in keyof Data]: UseAsyncStateCommonOptions<Data[Key]>
}

interface UseMultiAsyncData<Data extends Record<string, any> = any, Shallow extends boolean = false>
  extends UseAsyncStateActionOptions<Shallow> {
  multi: UseMultiAsyncDataMulti<Data>
}

type UseMultiAsyncDataReturn<
  Data extends Record<string, any>,
  Shallow extends boolean = false,
> = UseAsyncStateCommonReturn & {
  [Key in keyof Data]: MaybeShallowRef<Data[Key], Shallow>
}
/**
 * 获取异步方法内批量数据
 * @param fn
 * @param options
 */
declare const useMultiAsyncData: <
  Data extends Record<string, any>,
  Shallow extends boolean = false,
>(
  fn: (params?: any) => Promise<any>,
  options: UseMultiAsyncData<Data, Shallow>
) => UseMultiAsyncDataReturn<Data, Shallow>

Released under the MIT License.