用于 Api 调用的自定义钩子(Reactjs)

用于 api 调用的自定义钩子(reactjs)

我确信在开发复杂且大型的 React 应用程序时,每个人都会为代码的可重用性而苦苦挣扎。一种方法是(用于 api 调用的自定义挂钩)。让我们开始创建它们吧。

首先,我对我的糟糕写作感到抱歉,我的语言本来就不是英语:)

当然,我们在应用程序中必须多次从服务器获取数据。那么,我们如何才能有效地处理这些需求呢?

使用获取自定义挂钩

该自定义钩子的代码将是这样的:

从“axios”导入axios;从“反应”导入{useState};从“react-toastify”导入{toast};从“../../features/utils/ApiErrorMessages.json”导入 apiErrors;导出默认函数 useGet() {  const [getRes, setGetRes] = useState({});  const [getLoading, setGetLoading] = useState(true);  const [getError, setGetError] = useState({});  const getData =(url:字符串|未定义,配置:对象)=> {    如果(网址){      轴        .get(网址,配置)        .then((res) => {          setGetRes(res.data);          setGetLoading(假);        })        .catch((错误) => {          setGetError(错误);          setGetLoading(假);          toast.error(apiErrors.server_network_error);        });    }  };  返回 { getData, getRes, getError, getLoading };}

登录后复制

说明:当我搜索创建像 useGet 这样的钩子时,我在通灵时遇到了问题。这个问题在我每次使用那个钩子时都会导致无限循环!我通过提供一个函数来从 useGet 返回调用使用端来解决这个问题,而不是调用它自己的钩子。
你可以很明显地看到它。(getData函数)

我们在那个钩子中真正做的事情是这样的:
1-设置所需的状态
2-声明 getData 函数(该函数向给定的 url 发送 get 请求并保存我们状态中的响应和错误)
3-返回我们写的所有状态和函数

使用方法如何?我不得不说它会是这样的:

const {getData , getRes , getErrors , getLoading} = useGet()使用效果(()=> {    异步 const fetche = () => {        等待 getData({url : '/api/users' , 配置 : {}});    } },[])// 你的渲染逻辑

登录后复制

我不知道我是如何很好地解释我的代码中发生的事情的,但我希望你理解这一点。

usePost 自定义挂钩
代码:

从“axios”导入axios;从“反应”导入{useState};从“../../features/utils/ApiErrorMessages.json”导入 apiErrors;从“react-toastify”导入{toast};输入 postDataProps = {  网址:字符串|不明确的;  数据:对象;  配置:对象;};导出默认函数 usePost() {  const [postRes, setPostRes] = useState({});  const [postLoading, setPostLoading] = useState(true);  const [postError, setPostError] = useState({});  const postData = ({ url, data, config }: postDataProps) => {    如果(网址){      轴        .post(网址、数据、配置)        .then((res) => {          setPostLoading(假);          setPostRes(res.data);        })        .catch((错误) => {          setPostLoading(假);          setPostError(错误);          toast.error(apiErrors.server_network_error);        });    }  };  返回 { postData, postRes, postError, postLoading };}

登录后复制

要快乐!逻辑是一样的。但这是数据属性的差异!我们知道,当我们想要将某些内容发布到服务器时,我们必须随之发送数据。所以我们也在这里发送数据。

实施它们非常容易。现在您可以在您的应用程序中重复使用您的调用 api 功能!
Maby,我在这些钩子上没有很好地进行最佳实践。我正在学习。但现在可以了。
不要忘记可重用性。

快乐编码。

以上就是用于 Api 调用的自定义钩子(Reactjs)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2673677.html

(0)
上一篇 2025年3月7日 13:44:15
下一篇 2025年3月7日 13:44:26

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 为什么 HTMX 远远优于 React 和 NextJs

    在 Anuntech 上,我们面临创建 ERP 的挑战,对于那些已经使用过 ERP 的人来说,知道 ERP 可能是创建(和使用,上帝保佑 SAP 用户)更复杂的软件类型之一。 为了避免使用的复杂性,我们想要类似于 PlayStore 的东西…

    2025年3月7日
    000
  • 了解分支机构覆盖范围:综合指南

    分支覆盖率,也称为决策覆盖率,是软件测试和质量保证中的一个关键指标。它衡量测试用例在覆盖程序控制流的可能路径方面的有效性。通过确保测试每个可能的分支(或决策点),开发人员可以识别并减少代码中潜在的错误和漏洞。本文深入探讨了分支覆盖率的概念、…

    2025年3月7日
    200
  • 构建可重用 UI 套件的百分比

    嘿开发者:) 简介 凭借 15 年以上的 UI 套件构建和设计系统经验,我的团队正在推出一个平台(免费测试版访问),允许开发人员在几天而不是几个月内构建一致且功能齐全的 UI 套件/设计系统。为您提供最先进的系统设计/系统设计的最佳实践,以…

    2025年3月7日
    200
  • 如何使用 Passmps 掌握考试主题

    使用免费考试转储的好处 熟悉考试格式:免费考试转储的主要好处之一是,它们可以为最佳考试转储网站的考生提供考试格式和结构的预览。通过使用这些转储进行练习,考生可以了解可能出现的问题类型以及如何在考试期间管理自己的时间。 经济高效的准备:顾名思…

    2025年3月7日
    200
  • 使用 JAVASCRIPT 编写 HackerRank 的天数第 1 天

    目标今天,我们讨论数据类型。查看“教程”选项卡以获取学习材料和教学视频! 任务在下面的编辑器中完成代码。变量 i、d 和 s 已为您声明并初始化。你必须: 声明 3 个变量:1 个 int 类型、1 个 double 类型、1 个 Stri…

    2025年3月7日
    200
  • 在 TypeScript 中更喜欢实用程序类型而不是模型更改

    通常,在软件中,模型是一种抽象或表示现实世界中的系统、流程或对象的方式。建模是创建这些抽象以促进系统的理解、分析和设计的过程。 TypeScript 提供了多种实用程序类型来促进常见的类型转换,这些实用程序在全局范围内可用,并且可用于避免更…

    2025年3月7日
    200
  • js如何删除对象

    JavaScript 中删除对象的两种方法:使用 delete 运算符删除特定属性。将对象本身设置为 null 或 undefined。 如何使用 JavaScript 删除对象 在 JavaScript 中,删除对象有两种常见方法: 1.…

    2025年3月7日
    200
  • 优化 Web 开发项目的技巧

    在快节奏的 Web 开发世界中,优化项目对于确保项目高效运行、可扩展并提供无缝的用户体验至关重要。以下十个技巧可帮助您优化 Web 开发项目: 优化图像和媒体 提示:使用 WebP 等现代图像格式并在不损失质量的情况下压缩图像。利用响应式图…

    2025年3月7日
    200
  • Typescript 编码编年史:字符串的反转元音

    问题陈述: 给定一个字符串 s,仅反转字符串中的所有元音并返回它。 元音是 ‘a’、’e’、’i’、’o’ 和 ‘u’,…

    2025年3月7日
    200
  • Cypress 中的路径别名

    我不久前遇到了路径别名。提到开发人员如何在他们的 react 和 node 项目中导入的文章看起来很好。我想知道我是否可以在我的赛普拉斯自动化中使用此功能。 让我给你一些背景信息。因此,我的项目中的导入通常如下所示: import prod…

    2025年3月7日
    200

发表回复

登录后才能评论