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 受控输入框光标跳到末尾:格式化输入时的 selection 丢失 bug 与修复
前端·javascript·react.js·bug·react·next.js
10share3 小时前
React 新一代样式隔离方案 —— 编译时、零运行时、原生写法
前端·react.js
光影少年4 小时前
RN 的EventEmitter 双向通信
前端·react native·react.js
GuWenyue20 小时前
90%前端写React+TS都踩坑!从组件类型、单向数据流到本地存储完整实战
前端·react.js
张元清1 天前
React useThrottle Hook:节流值与回调(2026)
javascript·react.js
烬羽1 天前
React 状态提升:一个 ColorPicker,彻底搞懂状态该放哪里
react.js·typescript·设计
console.log('npc')1 天前
React 跨项目集成实战:iframe 实现子项目详情弹窗
前端·javascript·react.js
无人生还1 天前
从 Vue3 到 React · 快速上手系列第 8 篇:组件通信与 Context(对标插槽与 provide/inject)
前端·vue.js·react.js
光影少年1 天前
React Native Module 注册流程
前端·react native·react.js
BreezeJiang1 天前
RGB 滑块和颜色预览不同步?关键不是 CSS,而是状态该放在哪里
react.js