Skip to content

useSearchAsyncData

带搜索状态的异步状态业务封装

Usage

ts
import { 
useSearchAsyncData
} from '@vrx/core'
const { // 数据
data
,
// 搜索数据
searchData
,
// 是否正在加载
loading
,
// 是否发生错误
error
,
// 执行异步方法 // allowOverrideSearchData:true 时 接受该方法入参
execute
,
// 搜索
search
,
// 重置所有搜索
resetSearch
,
// 重置搜索状态,但并不触发异步任务
resetSearchData
,
// 取消异步方法
abort
,
// 异步方法是否取消
aborted
,
// 是否可以取消
canAbort
,
} =
useSearchAsyncData
(
(
params
,{
signal
}) =>
fetch
(`https://localhost/api/`, {
body
:
JSON
.
stringify
(
params
),
signal
}), { // 是否在 onMounted 生命周期自动执行一次,注意,自动执行时,无法传递参数
immediate
: true,
// 内部状态初始化
initData
: () => [],
// 获取数据的字符串路径
path
: 'res.data.data',
// 是否使用 shallowRef 包装状态
shallow
: true,
// 初始化搜索值
initSearchData
: () => ({
name
: '' }),
// 是否在每次请求前调用 initData 重置数据 // dataConcat:true 时 resetBeforeExecute无效
resetBeforeExecute
: true,
/** * 是否允许在异步任务执行时且存在入参时,直接使用入参作为搜索值 */
allowOverrideSearchData
: true,
} )

Type Declarations

ts
interface UseSearchAsyncData<Data = any, SearchData extends Record<string, any> = any, Shallow extends boolean = boolean> extends UseAsyncStateOptions<Data, Shallow> {
    /**
     * 初始化搜索数据
     */
    initSearchData?: () => SearchData;
    /**
     * 是否允许在异步任务执行时且存在入参时,直接使用入参作为搜索值
     */
    allowOverrideSearchData?: boolean;
}
interface UseSearchAsyncDataReturn<Data = any, SearchData extends Record<string, any> = any, Shallow extends boolean = boolean> extends UseAsyncStateReturn<Data, Shallow> {
    searchData: Ref<SearchData>;
    search: Fn<Promise<Data>>;
    resetSearchData: VoidFunction;
    resetSearch: Fn<Promise<Data>>;
}
declare const useSearchAsyncData: <Data = any, SearchData extends Record<string, any> = any, Shallow extends boolean = boolean>(fn: (params: any | undefined, options: UseAsyncStateExecOptions) => Promise<any>, options?: UseSearchAsyncData<Data, SearchData, Shallow>) => UseSearchAsyncDataReturn<Data, SearchData, Shallow>;

Released under the MIT License.