来自部分查询键匹配数据集的反应查询和占位符数据?
react-query and placeholder data from a partial query key match, dataset?
所以,我有这样的情况:
- 获取最初在页面加载时 returned 的 ID。让我们说“id=9”
- 我用它查询,得到了结果。
- return 看起来像这样:
queryKey is: ['guest', 9]
//return is
{
age: 2222,
year: 2019
}
我有一个第三方脚本,我必须下载它才能获得另一个“id”。这有时需要几秒钟。
我使用带有“新”id 的查询并得到结果,现在看起来像这样。
queryKey is: ['guest', 27]
{
age: 2222,
year: 2019
}
现在,当第二个“id”通过时,来自 useQuery 的 returned 数据是 {},实际上是空的。因此,我的组件获取初始有效负载,显示...然后闪烁,然后“新 ID”通过并重新显示组件中发生变化的一些措辞。
所以,我有两个问题。
- 如何使用更改后的 ID 和来自 'previous' ID 调用的“种子数据或占位符或初始数据”为我的“第二个 useQuery”播种...这样,就没有闪光灯了?
我知道你可以像文档显示的那样做,但我确实得到了那个“以前的”id 参考?
或者我是否只需要最后一个具有部分“来宾”queryKey 的?
placeholderData: () => {
return queryClient
.getQueryData(['guest', ?????])
?????
},
keepPreviousData: true
选项就是您要找的。
另见 the docs。即使文档明确提到分页,该标志所做的只是确保当查询键更改时(例如在您的情况下使用不同的 id),而不是进入加载状态,您将从上一个查询键获取数据,查询将保持成功状态,此外,您将在结果上设置一个 isPreviousData: true
标志,以便您知道它是以前的数据。
所以,我有这样的情况:
- 获取最初在页面加载时 returned 的 ID。让我们说“id=9”
- 我用它查询,得到了结果。
- return 看起来像这样:
queryKey is: ['guest', 9]
//return is
{
age: 2222,
year: 2019
}
我有一个第三方脚本,我必须下载它才能获得另一个“id”。这有时需要几秒钟。
我使用带有“新”id 的查询并得到结果,现在看起来像这样。
queryKey is: ['guest', 27]
{
age: 2222,
year: 2019
}
现在,当第二个“id”通过时,来自 useQuery 的 returned 数据是 {},实际上是空的。因此,我的组件获取初始有效负载,显示...然后闪烁,然后“新 ID”通过并重新显示组件中发生变化的一些措辞。
所以,我有两个问题。
- 如何使用更改后的 ID 和来自 'previous' ID 调用的“种子数据或占位符或初始数据”为我的“第二个 useQuery”播种...这样,就没有闪光灯了?
我知道你可以像文档显示的那样做,但我确实得到了那个“以前的”id 参考? 或者我是否只需要最后一个具有部分“来宾”queryKey 的?
placeholderData: () => {
return queryClient
.getQueryData(['guest', ?????])
?????
},
keepPreviousData: true
选项就是您要找的。
另见 the docs。即使文档明确提到分页,该标志所做的只是确保当查询键更改时(例如在您的情况下使用不同的 id),而不是进入加载状态,您将从上一个查询键获取数据,查询将保持成功状态,此外,您将在结果上设置一个 isPreviousData: true
标志,以便您知道它是以前的数据。