当前位置: 首页 > 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})

相关文章:

  • [BROADCASTING]tensor的扩散机制
  • Process Monitor 进程监控器 exe监控 windows程序监控
  • gitlab 设置 分支只读
  • Git 安全警告修复手册:解决 `fatal: detected dubious ownership in repository at ` 问题 ️
  • SpringBoot加载测试类属性和配置说明
  • git 提交代码,但是有些文件没有上传
  • 【论文阅读】PSDF Fusion:用于动态 3D 数据融合和场景重建的概率符号距离函数
  • Kotlin基础数据类型和运算符
  • Python的计算性能优化
  • QTabBar实验
  • 动态轮换住宅代理是什么?为何需要使用它?
  • 海思SD3403/SS928开发板 开发记录二: 设置网络 telnet连接开发板
  • mybatis-generator生成CURD
  • 52基于MATLAB的希尔伯特Hilbert变换求包络谱
  • CMake中的变量: 改变构建行为的变量
  • C# 免费离线人脸识别 2.0 Demo
  • Flex布局到底解决了什么问题
  • Mithril.js 入门介绍
  • Phpstorm怎样批量删除空行?
  • Python学习之路13-记分
  • Rancher如何对接Ceph-RBD块存储
  • ReactNativeweexDeviceOne对比
  • Spring Cloud中负载均衡器概览
  • spring-boot List转Page
  • Terraform入门 - 3. 变更基础设施
  • Vue ES6 Jade Scss Webpack Gulp
  • vue-router 实现分析
  • 前端技术周刊 2019-01-14:客户端存储
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 实习面试笔记
  • 一个项目push到多个远程Git仓库
  • 异步
  • 正则表达式
  • 转载:[译] 内容加速黑科技趣谈
  • 如何用纯 CSS 创作一个货车 loader
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​你们这样子,耽误我的工作进度怎么办?
  • # 飞书APP集成平台-数字化落地
  • #{}和${}的区别?
  • #Linux(make工具和makefile文件以及makefile语法)
  • #QT(智能家居界面-界面切换)
  • $.ajax,axios,fetch三种ajax请求的区别
  • (C语言)fgets与fputs函数详解
  • (八)Flask之app.route装饰器函数的参数
  • (二)Linux——Linux常用指令
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (四)模仿学习-完成后台管理页面查询
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)原始图像数据和PDF中的图像数据
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • (转载)虚函数剖析
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)