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>
)
相关推荐
程序员小张丶1 小时前
基于React Native开发HarmonyOS 5.0主题应用技术方案
javascript·react native·react.js·主题·harmonyos5.0
MrSkye2 小时前
React入门:组件化思想?数据驱动?
前端·react.js·面试
JacksonGao2 小时前
一分钟带你了解React Fiber的工作单元结构!
前端·react.js
Hilaku2 小时前
我为什么觉得 React 正在逐渐失去吸引力?
前端·react.js·前端框架
架构个驾驾3 小时前
React 18 核心特性详解:Props、State 与 Context 的深度实践
react.js·前端框架
itslife3 小时前
实现 render 函数 - 初始化更新队列
前端·react.js·前端框架
WildBlue3 小时前
🚀 React组件化实战:用TodoList项目搭乐高式开发!🎉
前端·react.js
wen's3 小时前
React Native 弹窗组件优化实战:解决 Modal 闪烁与动画卡顿问题
javascript·react native·react.js
今禾3 小时前
从零开始学React组件化开发:构建一个简单的TodoList应用
javascript·react.js
菥菥爱嘻嘻3 小时前
React---day11
前端·react.js·前端框架