SWR
swr
1 | import useSWR from 'swr' |
1 | 默认情况下,key 将作为参数传递给 fetcher。所以下面这 3 个表达式是等价的: |
通过包装swr为函数,避免逻辑隔离后重复请求或context传递数据
cookie的swr读取
1 | const fetcher = (url) => fetch(url, { credentials: 'include' }).then((res) => res.json()); |
- 在大多数情况下,浏览器会自动将与目标域相关的 Cookie 附加到每个请求中。因此,当你在浏览器环境下发送请求到
/api/user/get
时,如果目标域设置了 Cookie(比如SessionID
或者Token
),这些 Cookie 会自动附加到请求头中。 - 例如,如果用户已经登录了,并且登录状态由一个会话 Cookie 管理,浏览器会自动将该 Cookie 附加到
/api/user/get
请求中,服务器端可以读取 Cookie 并根据会话来返回相应的用户数据。
服务器端处理 Cookie:
- 当请求到达服务器时,服务器会从请求头中读取 Cookie,检查用户的身份和权限。例如,如果 Cookie 包含一个有效的会话 ID 或者 JWT(JSON Web Token),服务器将验证这些信息并返回相应的用户数据。
进行两个swr先后读取时
1 | function Profile() { |
代码中使用了 isUserLoading ? null : '/api/avatar/get/' + user.id
,这是一个关键改进。这里的逻辑是,当 isUserLoading
为 true
时(即用户数据仍在加载中),SWR 不会发送请求获取用户头像数据。
useSWR
的第一个参数为 null
时,表示不进行请求。这样避免了在用户数据还没加载完成时就发出获取头像的请求,这样的请求很可能会失败或者返回错误。
在用户数据加载完成后,才能确定 user.id
的值,这样就可以动态地拼接 URL 来获取用户头像数据。这种方式确保了获取头像的请求只有在有了有效的 user.id
后才会执行。
swr修改数据
####swr的老文档已经写的挺好了,很详细
#trpc的重复请求
和swr结合
或者直接用useQuery(),useMutation()函数
1 | 自动 |
1 | +手动 |
useMutation
是 React Query(或类似库如 tRPC 的 React 集成中)提供的一个强大的钩子,专门用于处理变化性操作,如发送 POST、PUT、PATCH、DELETE 请求等。这些操作通常会改变服务器上的数据,而不是像 GET 请求那样仅仅是读取数据。
useMutation
的作用
useMutation
钩子用于执行带有副作用的异步操作,例如:
- 创建资源(如新建用户、添加评论等)。
- 更新资源(如编辑用户信息)。
- 删除资源(如删除条目)。
它允许你对这些操作进行管理,并提供了以下功能:
- 追踪异步操作的状态(如
loading
、success
、error
)。 - 支持请求成功后或失败后的回调函数。
- 允许你手动处理缓存数据的更新(例如通过
invalidateQueries
来刷新相关的数据)。
基本使用
在使用 useMutation
时,你需要定义一个执行异步操作的函数(例如通过 fetch
或 axios
发起 HTTP 请求)。然后,你可以使用 mutate
函数来调用该异步操作。
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Comments