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>
)
相关推荐
Jolyne_8 小时前
css实现圆柱体
前端·css·react.js
._Ha!n.14 小时前
React基础知识(一)
react.js
迷途小码农零零发14 小时前
createContext+useContext+useReducer组合管理React复杂状态
前端·javascript·react.js
YiHanXii14 小时前
React中的跨组件通信
前端·javascript·react.js
平山14 小时前
React 入门指南
前端·react.js
每一天,每一步17 小时前
echarts生成3D立体地图react组件
javascript·react.js·echarts
GISer_Jing1 天前
前端算法实战:大小堆原理与应用详解(React中优先队列实现|求前K个最大数/高频元素)
前端·算法·react.js
今天也想MK代码1 天前
ReFormX:现代化的 React 表单解决方案 - 深度解析与最佳实践
前端·react.js·性能优化
yanyu-yaya1 天前
第三章 react redux的学习之redux和react-redux,@reduxjs/toolkit依赖结合使用
javascript·学习·react.js
dleei1 天前
react入门(上)
前端·react.js·前端框架