Prechádzať zdrojové kódy

refine(hooks): 优化 useRequest 立即执行逻辑
- immediate 选项由默认true 改为false
- 立即执行由在 onLoad 执行改为在钩子调用期间立即执行
BREAKING CHANGE: immediate 选项由默认 true 改为 false

Jinliang 1 rok pred
rodič
commit
457186c391

+ 4 - 6
src/hooks/useRequest.ts

@@ -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 }
 }

+ 1 - 0
src/pages/about/components/request.vue

@@ -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 = () => {