SWR库的使用
引言:
Q: 为什么需要此库?
A: React 给我们带来了useEffect这个函数钩子,为了处理副作用,然而在nextjs中,
有时候我们不需要通过getStaticProps函数来通过浏览器发送获取数据库的数据,而是直接在服务端中直接请求数据库的数据来达到减少调用与性能优化的效果,
SWR(
客户端与服务端混合渲染),那么就必然要使用副作用函数useEffect, 而useEffect却缺少了一些状态,例如错误时的处理与加载中的
状态,那么,SWR
这个库就是为了解决这种情况产生的
Q: 此库可以给我们带来什么? A: 请求时发送的任何情况的明确的状态:
TIP 三种状态同时存在一种状态,不存在有两种状态同时存在
- 未加载完成(加载数据中)
- 加载错误
- 加载成功
下载
pnpm i swr
使用
-
导入
import useSWR from 'swr' -
封装
封装网络请求API,在任何地方都可以重复使用的 fetch示例
const fetcher = async(...args: [uri: string, fetchOptions: RequestInit]) => {
return await fetch(...args).then((res)=>{
return res.json()
})
}axios与apollo的封装访问这里 -
使用
语法:
const { data, error } = useSWR(uri,fetcher)