首页 > 其他分享 >自动请求钩子,返回loding状态

自动请求钩子,返回loding状态

时间:2023-08-23 12:14:09浏览次数:28  
标签:TApiFun loading const 请求 钩子 useAutoRequest requestLoading loding onSuccess

// useAutoRequest.ts
/*
 * @Date: 2023-02-10 09:55:20
 * @Description: useAutoRequest
 */

import { Ref, ref } from 'vue';
type TApiFun<TData, TParams extends Array<any>> = (...params: TParams) => Promise<TData>;

interface AutoRequestOptions {
  // 定义一下初始状态
  loading?: boolean;
  // 接口调用成功时的回调
  onSuccess?: (data: any) => void;
}

type AutoRequestResult<TData, TParams extends Array<any>> = [Ref<boolean>, TApiFun<TData, TParams>];

/* 控制loading状态的自动切换hook */
export function useAutoRequest<TData, TParams extends any[] = any[]>(
  fun: TApiFun<TData, TParams>,
  options?: AutoRequestOptions
): AutoRequestResult<TData, TParams> {
  const { loading = false, onSuccess } = options || { loading: false };

  const requestLoading = ref(loading);

  const run: TApiFun<TData, TParams> = (...params) => {
    requestLoading.value = true;
    return fun(...params)
      .then((res) => {
        onSuccess && onSuccess(res);
        return res;
      })
      .finally(() => {
        requestLoading.value = false;
      });
  };

  return [requestLoading, run];
}

// 使用
  import { useAutoRequest } from '@/hooks/event/useAutoRequest';
  const [loading, submit] = useAutoRequest(callApiForAddPg);
  // loading在请求开始和结束前处于true
  function postApi(){
    submit().then()
  }

标签:TApiFun,loading,const,请求,钩子,useAutoRequest,requestLoading,loding,onSuccess
From: https://www.cnblogs.com/zhengzhijian/p/17650843.html

相关文章

  • curl命令post请求
    一、postformdatacurl-H"Content-Type:multipart/form-data"-H"Authorization:BasicXXXXXXXXXXXXX"-XPOST-F'username=10000000_kf005'-F'password=xxxxxxxx'-F'grant_type=password'-F'scope=all......
  • .net 记录http请求
    记录http请求环境.net7一、过滤器(Filter)这个过程用的的是操作过滤器(ActionFilter)二、2.1继承IAsyncActionFilter2.2重写OnActionExecutionAsyncOnActionExecutionAsync-在调用操作方法前调用OnActionExecutionAsync(ActionExecutingContext,ActionExecutionDele......
  • 实现Fetch 请求扩展超时功能
    要实现基本的超时功能其实很简单,只需要使用AbortController这个API,如果你不熟悉它,可以点击链接了解一下/***@description:创建一个fetch函数*@param{*}timeout:传入超时的时间*@return{*}返回一个新的fetch函数*/functioncreateFetch(timeout){//......
  • 闪现、请求扩展、g对象
    目录一闪现闪现示例分类放二请求扩展before_requestafter_requestbefore_first_requestteardown_requesterrorhandlertemplate_global全局标签template_filter全局过滤器三g对象四蓝图4.1使用蓝图4.2蓝图小型项目4.3蓝图大型项目五flask-session一闪现要求#一个请......
  • flask路由、模板、请求响应、session
    目录一路由系统1.1flask路由系统的参数1.2转换器(了解)1.3路由系统本质-->读源码1.4endpoint1.5flask写接口api二CBV2.2as_view源码三模板四请求响应五session一路由系统#1flask路由系统是基于装饰器的:参数如下#2转换器:#3路由系统本质#4endpoint不传会......
  • 记录--post为什么会发送两次请求?
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助在前段时间的一次面试中,被问到了一个如标题这样的问题。要想好好地去回答这个问题,这里牵扯到的知识点也是比较多的。那么接下来这篇文章我们就一点一点开始引出这个问题。同源策略在浏览器中,内容是很开放的,任何......
  • OS(八):存储器管理之请求分页存储管理方式
    请求分页系统建立在基本分页基础上,为能支持存储器功能增加了请求调页和页面置换功能。页面作为调入和换出的基本单位。1、请求分页的硬件支持1.1、页表机制页表将用户地址空间中逻辑地址变换为内存空间的物理地址。只将部分应用程序调入内存,页表增加若干项,详情如......
  • OS(九):储存器管理之请求分段存储管理方式
    1、段表机制段表的段表项:存取方式:标识本分段的存储属性是只执行、只读、还是允许读/写;访问字段A:记录该段被访问的频繁程度;修改为M:该段在进入内存后是否已被修改过;存在为P:该段是否已调入内存;增补位:表示本段在运行过程中是否做过动态增长;外存始......
  • 微信_如何响应用户请求;
    <imgsrc=""alt=""/><?php/**第二十三小分队(23工作室)*感谢:方倍工作室;**CopyRight2014-05-30AllRightsReserved*///签名define("TOKEN","weixin");$wechatObj=newwechatCallback();//isset()检测变量是否设置;if(!i......
  • 静态web服务器-根据请求返回指定页面数据
    实现步骤1.获取用户请求资源的路径2.根据请求资源的路径,读取指定文件的数据 3.组装指定文件数据的响应报文,发送给浏览器 4.判断请求的文件在服务端不存在,组装404状态的响应报文,发送给浏览器 示例importsocket#获取用户请求资源的路径#根据请求资源的路径,读取指......