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 小时前
我做了一面互联网摸鱼墙:从无限 Canvas 到本地生产环境
react.js·canvas·next.js
vim怎么退出19 小时前
Dive into React——Hooks 原理
react.js·源码阅读
光影少年1 天前
react的useMemo 如何优化?
前端·react.js·掘金·金石计划
YFF菲菲兔1 天前
React 核心流程总述
react.js
光影少年1 天前
react状态管理
前端·react.js·前端框架
珎珎啊1 天前
React 和 Vue 3的区别
前端·vue.js·react.js
Bigger1 天前
mini-cc 终端 UI:用 React 写 CLI 是什么体验
前端·react.js·ai编程
吹个口哨写代码1 天前
IIS 部署 Vue/React 单页应用 (SPA) 刷新页面 404/403.18 报错原因及终极解决方案
前端·vue.js·react.js
喵个咪2 天前
基于 Taro 的 Headless CMS 多端前端架构:技术解析与二次开发导引
前端·react.js·taro