在我的应用程序中,我有一个分页提要,其中包含从 /feed 端点检索到的帖子。
每个饲料post
都有...
postId
postTitle
postBody
postCreator
(目的)
每个postCreator
对象都有...
userId
userName
userBio
userImageUrl
正如 Redux 所建议的,我目前...
- 提取
postCreator
对象并将它们存储在自己的全局中usersStore
(使用 Zusand) - 在每篇文章中用相关的(在全局中引用用户)替换
postCreator
对象postCreatorId
usersStore
- 将帖子存储在自己的位置
postsStore
(使用 Zusand)
这样做的好处是...
- 如果用户更新了他们的信息(例如姓名或简历),我们只需更新他们在 usersStore 中的记录,他们的信息将在整个应用程序中更新(他们在提要帖子 UI 中的帖子创建者信息,他们在标签栏等)
- 我们不必从 /feed 端点重新请求数据来获取包含更新
postCreator
对象的帖子。特别是考虑到用户可能在那个时间点向下滚动了提要,所以我们可能不得不从 /feed 端点获取数百个帖子,给我们的后端带来压力。
反应查询/SWR
我最近发现了 React Query 和 SWR,并且听说了很多关于它们如何“消除对全局状态的大部分需求”的信息,但我对它们如何处理上述情况感到有些困惑。在对 React-Query 进行了一些研究之后,我的印象是有几种方法可以处理这个......
如上所述,仍然使用全局
usersStore
和在单个位置更新用户信息。postStore
报废全局
usersStore
,并postCreator
直接在 React-Query 的缓存中更新/feed
无限查询的信息,使用queryClient.setQueryData
. 但是我们还必须更新返回用户信息的其他查询缓存,如果缓存过期怎么办?废弃 global
usersStore
,并在用户更新其信息时从 /feed 端点重新获取所有帖子。但是,如果用户在那个时间点向下滚动了提要,我们可能不得不从 /feed 端点获取数百个帖子,给我们的后端带来压力。React-Query 无限查询重新获取文档
使用 React-Query/SWR 处理此问题的最佳实践方法是什么?