useQuery 钩子可以跳过自身吗?
Can a useQuery hook skip itself?
不是通过将 skipToken
传递给其 useQuery
挂钩来跳过查询,查询是否可以跳过自身?
在 RTK 查询 API 参考部分 Setting default headers on requests 中,有一个示例,其中 prepareHeaders
检查商店中的授权令牌,如果存在,则将其设置为请求的授权 header。这正是我在我的应用程序中所做的。
但是如果存储中的令牌 不 那么请求将失败并显示 HTTP 403。更糟糕的是,该失败由 RTKQ 缓存,因此 useQuery
挂钩下一次会再次失败,即使此时授权令牌可用。
所以在那种情况下我想跳过查询。我只能看到两种方法,但都不令人满意:
- 一种方法是让 React 组件检查存储并通过
skipToken
如果授权令牌不在商店中。但这是一种痛苦
因为我必须记得在每个组件中做同样的检查
使用查询。而且我认为授权机制应该在查询代码内部。
- 另一种可能性是覆盖
queryFn
,在那里进行检查,
和 return 如果不存在身份验证令牌,则会出现错误。这个有点
笨重,它仍然留下了和以前一样的问题:失败
已缓存,因此 useQuery
挂钩将保持 returning 错误甚至
什么授权令牌可用。
我想要一种方法,使查询能够在不存在身份验证令牌的情况下跳过自身(就好像 skipToken
已传递到 useQuery
挂钩)。有没有可能做这样的事情?
不,没有这种跳过自身的机制。
我建议向所有需要身份验证的查询添加一个 authenticated
标签,并使 login
突变中的标签无效。
不是通过将 skipToken
传递给其 useQuery
挂钩来跳过查询,查询是否可以跳过自身?
在 RTK 查询 API 参考部分 Setting default headers on requests 中,有一个示例,其中 prepareHeaders
检查商店中的授权令牌,如果存在,则将其设置为请求的授权 header。这正是我在我的应用程序中所做的。
但是如果存储中的令牌 不 那么请求将失败并显示 HTTP 403。更糟糕的是,该失败由 RTKQ 缓存,因此 useQuery
挂钩下一次会再次失败,即使此时授权令牌可用。
所以在那种情况下我想跳过查询。我只能看到两种方法,但都不令人满意:
- 一种方法是让 React 组件检查存储并通过
skipToken
如果授权令牌不在商店中。但这是一种痛苦 因为我必须记得在每个组件中做同样的检查 使用查询。而且我认为授权机制应该在查询代码内部。 - 另一种可能性是覆盖
queryFn
,在那里进行检查, 和 return 如果不存在身份验证令牌,则会出现错误。这个有点 笨重,它仍然留下了和以前一样的问题:失败 已缓存,因此useQuery
挂钩将保持 returning 错误甚至 什么授权令牌可用。
我想要一种方法,使查询能够在不存在身份验证令牌的情况下跳过自身(就好像 skipToken
已传递到 useQuery
挂钩)。有没有可能做这样的事情?
不,没有这种跳过自身的机制。
我建议向所有需要身份验证的查询添加一个 authenticated
标签,并使 login
突变中的标签无效。