当前位置: 首页 > Web前端 > HTML

React的自定义Hook

时间:2023-03-27 23:42:48 HTML

自定义Hook函数CustomHook就是使用内置Hook的普通函数。我们可以将函数组件中重复处理的逻辑抽取出来,封装成钩子,以减少代码量,方便函数组件的快速编写。标准的自定义Hook应该在开始使用时用一个小驼峰来命名。比如useRequest、useLoad、useExport等。自定义Hook的例子useRequest基于axios请求异常步骤API数据的自定义hookimport{AxiosResponse}from"axios";import{useState,useEffect}from"react";interfaceResponses{code:number,message:string,data:D,};typeUseRequest=[data:D,setData:React.Dispatch>,handleUpdate:()=>void,]导出默认函数useRequest(requestApi:(params?:P)=>Promise>>,params?:P,handleError?:(err?:any|Responses)=>void,handleFinally?:()=>void,):UseRequest{const[data,setData]=useState();const[更新,setUpdate]=useState(1);consthandleUpdate=()=>{setUpdate((value)=>{returnvalue+1;});};useEffect(()=>{letactive=true;if(active){requestApi(params).then((response)=>{switch(response.data.code){案例0:{setData(response.data.data);}休息;default:{//你的错误句柄...handleError&&handleError(response.data);};}}).catch(handleError).finally(handleFinally);}return()=>{active=false;};},[更新]);返回[数据,setData,handleUpdate];}