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>
)
相关推荐
进阶的鱼3 小时前
React+ts+vite脚手架搭建(四)【mock篇】
前端·javascript·react.js
Keepreal4964 小时前
word文件预览实现
前端·javascript·react.js
郝开4 小时前
5. React中的组件:组件是什么;React定义组件
前端·javascript·react.js
Keepreal4967 小时前
pdf文件预览实现
javascript·react.js
Python私教7 小时前
React + Ant Design + Tailwind CSS 打造「无痕」垂直滚动区域:功能全上,滚动条隐身
前端·css·react.js
aesthetician10 小时前
React 19.2.0: 新特性与优化深度解析
前端·javascript·react.js
知识分享小能手20 小时前
微信小程序入门学习教程,从入门到精通,微信小程序核心 API 详解与案例(13)
前端·javascript·学习·react.js·微信小程序·小程序·vue
蓝瑟1 天前
React 项目实现拖拽排序功能,如何在众多库中选对 “它”
前端·javascript·react.js
小刘不知道叫啥1 天前
React 源码揭秘 | 合成事件
前端·javascript·react.js