refine(hooks): 优化 useRequest 立即执行逻辑

- immediate 选项由默认true 改为false
- 立即执行由在 onLoad 执行改为在钩子调用期间立即执行
BREAKING CHANGE: immediate 选项由默认 true 改为 false
This commit is contained in:
Jinliang 2024-06-08 15:59:49 +08:00
parent f69515952b
commit 457186c391
2 changed files with 5 additions and 6 deletions

View File

@ -1,7 +1,7 @@
import { UnwrapRef } from 'vue'
type IUseRequestOptions<T> = {
/** 是否立即执行如果是则在onLoad执行 */
/** 是否立即执行 */
immediate?: boolean
/** 初始化数据 */
initialData?: T
@ -11,13 +11,13 @@ type IUseRequestOptions<T> = {
* useRequest是一个定制化的请求钩子
* @param func Promise
* @param options {immediate, initialData}
* @param options.immediate true
* @param options.immediate false
* @param options.initialData undefined
* @returns {loading, error, data, run}
*/
export default function useRequest<T>(
func: () => Promise<IResData<T>>,
options: IUseRequestOptions<T> = { immediate: true },
options: IUseRequestOptions<T> = { immediate: false },
) {
const loading = ref(false)
const error = ref(false)
@ -39,8 +39,6 @@ export default function useRequest<T>(
})
}
onLoad(() => {
options.immediate && run()
})
options.immediate && run()
return { loading, error, data, run }
}

View File

@ -47,6 +47,7 @@ const recommendUrl = ref('http://laf.run/signup?code=ohaOgIX')
const initialData = undefined
// Service
const { loading, error, data, run } = useRequest<IFooItem>(() => getFooAPI('菲鸽'), {
immediate: true,
initialData,
})
const reset = () => {