当需求需要走其他路径时如何触发重新获取?
How to trigger refetch when the requirement need to go other path?
到目前为止,我可以在子组件上传递 refetch 函数。问题是当我必须转到其他页面并使用 redux 时。 (打开新路径对话框 link)。在该页面中,我将触发此重新获取功能。而 redux 肯定不能保存函数 refetch。解决这个问题的正确方法是什么?
const { data: getWorkerGroupsResponse, refetch } = useQuery(
'get-worker-group',
async () => getWorkerGroups(projectId as string),
{
enabled: !!projectId,
},
);
在上面的代码中,我必须将重新获取传递给其他页面。
React 查询会在查询键更改时自动处理重新获取。您不应该仅仅因为 ID 已更改就需要调用 refetch
。
您的组件中有一个错误,即查询键不包含 id,因此从 RQ 的角度来看,只有一个查询。如果你引入它,即使不手动重新获取也可以:
const { data: getWorkerGroupsResponse, refetch } = useQuery(
['get-worker-group', projectId], // projectId should be part of queryKey
async () => getWorkerGroups(projectId as string),
{
enabled: !!projectId,
},
);
现在,当 projectId
发生变化时,React 查询会发现您提供的 queryKey
发生了变化,并将使用新值重新运行查询。
到目前为止,我可以在子组件上传递 refetch 函数。问题是当我必须转到其他页面并使用 redux 时。 (打开新路径对话框 link)。在该页面中,我将触发此重新获取功能。而 redux 肯定不能保存函数 refetch。解决这个问题的正确方法是什么?
const { data: getWorkerGroupsResponse, refetch } = useQuery(
'get-worker-group',
async () => getWorkerGroups(projectId as string),
{
enabled: !!projectId,
},
);
在上面的代码中,我必须将重新获取传递给其他页面。
React 查询会在查询键更改时自动处理重新获取。您不应该仅仅因为 ID 已更改就需要调用 refetch
。
您的组件中有一个错误,即查询键不包含 id,因此从 RQ 的角度来看,只有一个查询。如果你引入它,即使不手动重新获取也可以:
const { data: getWorkerGroupsResponse, refetch } = useQuery(
['get-worker-group', projectId], // projectId should be part of queryKey
async () => getWorkerGroups(projectId as string),
{
enabled: !!projectId,
},
);
现在,当 projectId
发生变化时,React 查询会发现您提供的 queryKey
发生了变化,并将使用新值重新运行查询。