React自定义Hook之useRequest

一、简介

通过自定义hook,实现对http请求封装。

支持loading状态判断请求进度,支持获取请求正确和错误结果。

二、技术方案

use request hook

javascript 复制代码
export const useRequest = (options) => {
    
    // 请求参数
    const [url, ...init] = options;
    // 请求返回的数据
    const [data, setData] = useState(null);
    // 请求返回的错误信息
    const [error, setError] = useState(null);
    // 请求的loading 状态
    const [loading, setLoading] = useState(false);
     
    function loader(){
        setLoading(true);
        return fetch(url, init)
            .then((res) =>{
                setData(res.json());
                setLoading(false);
             })
            .catch((error) => {
                setError(error);
                setLoading(false); 
            });
    }

    return {loader, data, error, loading};

}

使用样例

javascript 复制代码
const {data, loader, error, isLoading} = useRequest({url:'/api/get/user',
                                            method:'GET',
                                            headers:{"Content-Type":"application/json"}}
);
return (
<Button onClick = {()=>{loader()}}>获取数据</Button>

<div>
    {isLoading ? <span>加载中</span> : <span>data</span>}
</div>
)
相关推荐
再希10 小时前
React+Tailwind CSS+Shadcn UI
前端·react.js·ui
浪裡遊12 小时前
Next.js路由系统
开发语言·前端·javascript·react.js·node.js·js
刺客_Andy15 小时前
React 第五十二节 Router中 useResolvedPath使用详解和注意事项示例
前端·react.js·架构
XiaoSong16 小时前
基于 React Native/Expo 项目的持续集成(CI)最佳实践配置指南
前端·react native·react.js
前端老宋Running1 天前
为什么react~Hooks只能在组件最顶层调用
前端·react.js·面试
Asort1 天前
React类组件精要:定义机制与生命周期方法进阶教程
前端·javascript·react.js
WenGyyyL1 天前
GMNER多模态实体识别任务——ReAct结合
前端·react.js·前端框架
辻戋1 天前
从零实现React Scheduler调度器
前端·react.js·前端框架
徐同保1 天前
使用yarn@4.6.0装包,项目是react+vite搭建的,项目无法启动,报错:
前端·react.js·前端框架
Qrun1 天前
Windows11安装nvm管理node多版本
前端·vscode·react.js·ajax·npm·html5