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>
)
相关推荐
暗不需求15 小时前
# 深入 React Todos:从零实现一个状态提升与本地持久化的待办应用
javascript·react.js·全栈
骑自行车的码农15 小时前
数据的源头 —— JSX
react.js
时光足迹16 小时前
Tiptap 简单编辑器模版
前端·javascript·react.js
时光足迹17 小时前
Tiptap编辑器
前端·javascript·react.js
时光足迹17 小时前
电子书阅读器之笔记高亮(跨段处理)
前端·javascript·react.js
空中海19 小时前
03 渲染机制、性能优化与现代 React
javascript·react.js·性能优化
openKaka_1 天前
为什么 React 18 之后使用 createRoot,而不是 ReactDOM.render
前端·javascript·react.js
老王以为1 天前
从源码到架构:React useActionState 深度剖析
前端·javascript·react.js
天蓝色的鱼鱼1 天前
当AI开始替我写代码,我还要纠结选Vue还是React吗?
vue.js·react.js·ai编程