当前位置: 首页 > news >正文

react:swr接口缓存

useSWR 是一个 React Hooks,是 HTTP 缓存库 SWR 的核心方法之一。SWR 是一个轻量级的 React Hooks 库,通过自动缓存数据来实现 React 的数据获取。
第一个参数是被缓存的数据的 key,
第二个参数是一个函数,该函数返回数据或者一个 Promise
第三个参数是一个配置对象,它允许我们对 useSWR 请求的行为进行一些自定义设置, 参数如下

revalidateOnFocus - 如果设置为 true,窗口焦点切换到此页面时将自动重新验证数据。
revalidateOnReconnect - 如果设置为 true,每次从离线到在线时将自动重新验证数据。
revalidateOnMount - 如果设置为 true,每次组件挂载时都会自动重新验证数据。
refreshWhenHidden - 如果设置为 true,在文档不可见时还是会自动重新验证数据。
refreshWhenOffline - 如果设置为 true,即使 offline,也会自动重新验证数据。
suspense - 如果设置为 true,在重新验证数据之前将显示占位符内容来保持组件渲染的持续性。
errorRetryCount - 它是重试次数,默认值为 3,当数据验证失败时,它将尝试重新验证数据的次数。
errorRetryInterval - 毫秒数,当数据验证失败后重试的间隔时间。默认值为 5 秒。
dedupingInterval - 重复验证响应的缓存时间,以毫秒为单位。
focusThrottleInterval - 切换页面焦点之后,重试时间的等待时间。
loadingTimeout - 最长等待请求的毫秒数,超时会显示加载错误消息。
import useSWR from 'swr'
const apiUrl = `/api/users/${userId}`const { data, error } = useSWR(apiUrl)

import useSWRImmutable from ‘swr/immutable’
useSWRImmutable 是一个 React Hooks,它是从 swr/immutable 库中导入的。它可以在缓存过期之前重新使用数据,以避免从服务器读取数据的时间和网络成本,帮助提高应用程序的性能和用户体验。
useSWRImmutable 并不是同步调用的。它是一个异步 Hook,在使用 useSWRImmutable 时,当我们作出数据请求时,它将使用本地缓存提供此数据。如果数据不存在于本地缓存中,则发起异步 API 请求,然后将结果存储在缓存中。下一次尝试获取这个数据的时候,useSWRImmutable 只需返回本地缓存中的数据。


import useSWRImmutable from 'swr/immutable'
// const { data, error } = useSWRImmutable(key, fetcher, options)
const { data: userInfo } = useSWRImmutable('userInfoConfig', getUserconfig, {})

import useSWRMutation from ‘swr/mutation’
useSWRMutation提供了简单且强大的方式来管理数据的更新和提交,从而让我们轻松地构建出 CRUD 应用程序。useSWRMutation Hook 可以帮助我们轻松地使用 REST API 进行数据更新、提交和创建。与传统的 useEffect 和 useState 结合使用方式不同,它可以处理HTTP请求的生命周期管理,并且还能自动更新缓存并在成功或失败时提供API响应。

const { trigger: cancleTrigger } = useSWRMutation('canleBuild', cancleBuild) as any
cancleTrigger(obj).then(res => {if (res.code === '0') {notification.success({message: '提示',description: '取消构建成功',})M({ ...appBuildparamsInfo, jobName })}})

import { useSWRConfig } from ‘swr’
useSWRConfig 是一个 React Hook,可以让我们轻松地配置和管理 useSWR Hook 的全局配置。假设我们要在所有使用 useSWR 的组件中统一配置 API 的缓存时间和错误重试次数,我们可以使用 useSWRConfig 来实现:

import { SWRConfig } from 'swr'
const { cache, mutate } = useSWRConfig({provider: () => new Map(),shouldRetryOnError: false,revalidateOnFocus: true,dedupingInterval: 10000,errorRetryInterval: 5000,errorRetryCount: 3})
http://www.lryc.cn/news/223089.html

相关文章:

  • 2023-11 | 短视频批量下载/爬取某个用户的所有视频 | Python
  • 【JAVA学习笔记】66 - 本章作业(IO流)
  • vscode中 vue3+ts 项目的提示失效,volar插件失效问题解决方案
  • Elasticsearch:在 ES|QL 中使用 DISSECT 和 GROK 进行数据处理
  • 基于自适应自回归模型的高级人工智能概念及其实现
  • windows的mysql启动错误,查看windows日志
  • centos7部署Canal与Canal集成使用
  • C语言--分段函数--switch语句
  • 动态规划31(Leetcode188买卖股票的最佳时机4)
  • npm包管理相关命令
  • 2023年Q3乳品行业数据分析(乳品市场未来发展趋势)
  • 软考 系统架构设计师系列知识点之边缘计算(2)
  • Maven中的继承与聚合
  • 第三章 UI开发的点点滴滴
  • 637. 二叉树的层平均值
  • 【Java笔试强训】Day9(CM72 另类加法、HJ91 走方格的方案数)
  • django REST框架- Django-ninja
  • 数据结构与算法C语言版学习笔记(3)-线性表的链式结构:链表
  • Web学习笔记-Vue3(环境配置、概念、整体布局设计)
  • 【React-Native开发3D应用】React Native加载GLB格式3D模型并打包至Android手机端
  • python的列表
  • [100天算法】-最短无序连续子数组(day 66)
  • 001. 变量、环境变量
  • 软考软件设计师刷题笔记整理
  • Canal
  • SpringBoot实现mysql与clickhouse多数据源
  • 为什么是LangChain?
  • Labview的分支判断
  • 蓝桥杯双周赛算法心得——串门(双链表数组+双dfs)
  • mysql 配置主从复制 及 Slave_SQL_Running = no问题排查