首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【React】1935- 来看看 SWR 如何用 React Hook 实现优雅请求

前言 如果你是一名经验丰富的 react 开发者,那么你肯定有遇到过以下几种情况: 请求库封装复杂,手动实现各种缓存验证去重逻辑,还需要维护请求加载错误状态 由于组件的重复渲染导致的 重复请求 用户将网站长时间挂在后台导致缓存的...useSWR 的 key 值是一个三目表达式,当 key 为 null 时,SWR 将不会发送请求,直到 key 有值才会发送请求,以确保请求间的依赖关系正常。...请求同一个数据,当页面渲染时,Modal 组件useSWR 与页面useSWR 几乎同时触发,在一定时间内重复的请求会被 SWR 删除,因此只会发送一个请求。...这里需要注意一下,在 React 官方文档中提到了 hooks-rules[4] : 不要在循环,条件嵌套函数调用 Hook, 确保总是在你的 React 函数的最顶层以及任何 return 之前调用他们...target=https%3A%2F%2Fzh-hans.reactjs.org%2Fdocs%2Fhooks-rules.html [5] https://swr.vercel.app/zh-CN/blog

64910
您找到你想要的搜索结果了吗?
是的
没有找到

Redux你是个好人,只是我们不合适

如果没使用「状态管理」方案,常见方式是请求数据后保存在组件state: function App() { const [data, updateData] = useState(null);...当可复用组件、状态需要跨组件层级传递,通常使用Context API。 再大范围的状态会使用「状态管理」方案。...对于缓存,常见的需求是: 数据状态,加载?加载完成?发生错误? 缓存失效后的更新 复用缓存数据 在React技术栈,SWR、react-query都是优秀的解决方案。...> { fetchData('/api/user').then(data => updateData(data)) }, []) // 处理data } SWR使用一个useSWR解决... } 让我们来看SWR如何满足如上三个需求: 数据状态:通过useSWR的返回值参数判断请求状态。比如!error && !data代表「请求」。

50910

Redux你是个好人,只是我们不合适

如果没使用「状态管理」方案,常见方式是请求数据后保存在组件state: function App() { const [data, updateData] = useState(null);...当是可复用组件、状态需要跨组件层级传递,通常使用Context API。 再大范围的状态会使用「状态管理」方案。...对于缓存,常见的需求是: 数据状态,加载?加载完成?发生错误? 缓存失效后的更新 复用缓存数据 在React技术栈,SWR、react-query都是优秀的解决方案。这里以SWR举例: ?...使用一个useSWR解决: function App() { const { data, error } = useSWR('/api/user', fetcher) if (error) return... } 让我们来看SWR如何满足如上三个需求: 数据状态:通过useSWR的返回值参数判断请求状态。比如!error && !data代表「请求」。

1K20

创建一个像Opensea一样的NFT市场

任务 3.2:编写组件来显示 NFT 在这个组件,我们也使用了SWR,就像我们在教程:用 Web3-React 和 SWR 构建 DApp[7]做的那样。...SWR的获取器在utils/fetcher.tsx。...在未来,我们可能会增加功能,将所有权转移到其他地址多签钱包。为了使教程简单,我们跳过这些功能。 市场合约有一个固定的上架费用。...至少有两项工作要做: 我们应该在查询函数中加入分页功能。如果市场上有成千上万的物品,查询函数就不能很好地工作。...我们还可能发现,让 webapp 直接从智能合约查询数据并不是一个好的设计。应该有一个数据索引层。The Graph 协议[8]和 subgraph 可以完成这项工作

1.7K50

React 18 最新进展:发布 Beta 版本,公开测试新特性

根据 前端框架调查 ,Reactjs 是开发者社区中最受欢迎和喜爱的框架。此外,根据 2020 年堆栈溢出调查 ,React 是开发人员之间使用最多的前端开发框架。...在标准的 React 应用程序,如果动画在一个组件工作,同时用户点击输入其他 React 组件,如果用户键入单击按钮,动画也会在 React 的上下文中呈现。...React 18 工作组 宣布 React 18 从 Alpha 进入 Beta 阶段,Beta 是测试版本, 大部分工作都是对 Alpha 版本发布的新特性进行文档优化、功能测试和改进,在最终版本发布之前...不会有任何额外的新特性 API 。...React 测试库等关联库密切合作,以提供顺畅的升级路径,已知兼容 React 18 的库如下: Next.js Next.js 的最新版本支持 React 18 和并发特性: https ://nextjs.org

5.1K20

Vue 3.0 这个迷人的小妖精,到底好在哪里?(更新原理对比)

设计动机 大 Vue3 这种全球热门的框架,任何一个 breaking-change 的设计一定有它的深思熟虑和权衡,那么 composition-api 出现是为了解决什么问题呢?...让我们把zeit/swr的逻辑照搬到Vue3, 看一下swr在Vue3的表现: failed to load import { createComponent, computed } from 'vue' import useSWR from 'vue-swr...分页支持 完备的 TypeScript 支持 等等等等……而这么多如此强大的能力,都在一个小小的 useSWR() 函数,谁能说这不是魔法呢?...React Hook 和 Vue Hook 对比 其实 React Hook 的限制非常多,比如官方文档中就专门有一个章节介绍它的限制: 不要在循环,条件嵌套函数调用 Hook 确保总是在你的 React

1.7K10

React 性能优化完全指南,将自己这几年的心血总结成这篇!

1、将调和阶段记录的更新方案应用到 DOM 。2、调用暴露给开发者的钩子方法,:componentDidUpdate、useLayoutEffect 等。...如果把例子的 换成自定义组件,并且自定义组件使用了 PureComponent React.memo 优化。...而 throttle 更适合需要实时响应用户的场景更适合,通过拖拽调整尺寸通过拖拽进行放大缩小(:window 的 resize 事件)。...React 工作流[40]提交阶段的第二步就是执行提交阶段钩子,它们的执行会阻塞浏览器更新页面。 如果在提交阶段钩子函数更新组件 State,会再次触发组件的更新流程,造成两倍耗时。...在该场景,除非想办法不依赖 DOM 信息,否则两次更新过程是少不了的,就只能用其他优化技巧了。 use-swr 的源码[43]就使用了该优化技巧。

6.8K30

Vue3 究竟好在哪里?(和 React Hook 的详细对比)

设计动机 大 Vue3 这种全球热门的框架,任何一个 breaking-change 的设计一定有它的深思熟虑和权衡,那么 composition-api 出现是为了解决什么问题呢?...让我们把zeit/swr的逻辑照搬到 Vue3 , 看一下swr在 Vue3 的表现: failed to load...'vue-swr' export default createComponent({ setup() { // useSWR帮你管理好了取数、缓存、甚至标签页聚焦重新请求、甚至Suspense...分页支持 完备的 TypeScript 支持 等等等等……而这么多如此强大的能力,都在一个小小的 useSWR() 函数,谁能说这不是魔法呢?...React Hook 和 Vue Hook 对比 其实 React Hook 的限制非常多,比如官方文档中就专门有一个章节介绍它的限制: 不要在循环,条件嵌套函数调用 Hook 确保总是在你的 React

1.8K20

Vue3 究竟好在哪里?(和 React Hook 的详细对比)

设计动机 大 Vue3 这种全球热门的框架,任何一个 breaking-change 的设计一定有它的深思熟虑和权衡,那么 composition-api 出现是为了解决什么问题呢?...让我们把zeit/swr的逻辑照搬到 Vue3 , 看一下swr在 Vue3 的表现: failed to load...'vue-swr' export default createComponent({ setup() { // useSWR帮你管理好了取数、缓存、甚至标签页聚焦重新请求、甚至Suspense...分页支持 完备的 TypeScript 支持 等等等等……而这么多如此强大的能力,都在一个小小的 useSWR() 函数,谁能说这不是魔法呢?...React Hook 和 Vue Hook 对比 其实 React Hook 的限制非常多,比如官方文档中就专门有一个章节介绍它的限制: 不要在循环,条件嵌套函数调用 Hook 确保总是在你的 React

53810

【Docker项目实战】使用Docker部署lemonitor镜像站点列表程序

更新软件源:在配置服务器开发环境时,运维人员可以使用Lemonitor工具来更新软件源列表,确保可以获取到最新的软件版本和安全补丁。这样可以避免因为使用过时的软件源而导致的安全漏洞和性能问题。...管理软件依赖:在开发过程,开发人员通常需要使用各种开源库和框架。Lemonitor工具可以帮助他们快速查找和下载所需的软件依赖。这样可以简化依赖管理的过程,减少开发人员的工作量。...三、本地环境检查 3.1 检查Docker服务状态 检查Docker服务是否正常运行,确保Docker正常运行。...0.0.0.0:6780->80/tcp, :::6780->80/tcp lemonitor 5.5 检查lemonitor容器日志 检查lemonitor容器运行日志,确保lemonitor服务正常运行...这大大提高了运维人员和开发人员的工作效率,并为他们提供了更加便捷的配置方式。我个人对Lemonitor的使用体验非常满意,它不仅实用,而且能够帮助我提高工作效率。

11320

音视频八股文(11)-- ffmpeg 音频重采样

AV_SAMPLE_FMT_DBL : 210248 = 163842.6 ⾳频播放时间计算以采样率44100Hz来计算,每秒44100个sample,⽽正常⼀帧为1024个sample,可知每帧播放时间...输出的layout, :5.1声道 enum AVSampleFormat out_sample_fmt, // 输出的采样格式。...与lswr的交互是通过SwrContext完成的,SwrContext被分配给swr_alloc()swr_alloc_set_opts()。...这可以使⽤swr_alloc() swr_alloc_set_opts()来完成。 如果您使⽤前者,则必须通过AVOptions API设置选项。...您必须再次调⽤swr_init()。转换本身通过重复调⽤swr_convert()来完成。 请注意,如果提供的输出空间不⾜采样率转换完成后,样本可能会在swr缓冲,这需要“未来”样本。

78520
领券