react-query - 在 React-Query 中登录后将状态分配给不同的组件
问题描述
一旦用户发送登录请求,他就会通过 Graphql 响应接收数据,包括他的设置、通知和其他一些分布在某些组件中的东西。目前,我将用户的登录状态存储在布尔值中,一旦这是真的,我将在每个需要服务器状态的组件中发送请求。这似乎非常低效。有没有办法通过简单地使用最初输入的数据来实现这一点?
解决方案
我假设登录是一个返回登录数据的突变。我会对 /user/settings 和 /user/notifications 进行关联查询,或者可能只是一个通用的 /user/data,它可以为您提供有关用户的所需信息。
然后,登录后的突变可以通过简单地写入 queryCache 来更新该查询(请参阅官方文档)。然后,只要您需要,我就会在该查询上调用 useQuery,它会为您提供数据。如果您不想进行后台重新获取,请设置staleTime: 0
,您将始终从缓存中获取数据,这些数据是您在突变后放在那里的。将 useQuery 调用提取到自定义挂钩将使其变得简单,就像说:
const userData = useUserData()
无论您需要它。
至于登录状态,一些应用程序更喜欢在顶部进行登录/未登录切换以避免这种情况,例如:
isLoggedIn ? <MyAppForLoggedInUsers /> : <MyPublicApp />
推荐阅读
- c# - 无法正常退出功能
- excel - 如果值更改,如何自动更改单元格的颜色
- gremlin - 在已过滤、切片和切块后从 gremlin 路径返回特定属性
- oop - 三层架构中业务逻辑层内的交互?
- node.js - 将节点模块转换为 ESM
- javascript - 将类转换为钩子(在 if 语句中声明)
- linux - 在后台运行的 Qt 应用程序中监听 linux 命令?
- c++ - 无法访问子类的方法
- azure-functions - 在 Azure Function 中使用 changeFeed 迁移 cosmos Db
- javascript - 谷歌标签管理器和单页应用程序:如何读取 DOM 元素?