使用Apollo Client的refetchQueries选项来刷新查询并强制触发状态更新钩子。
例如,假设我们的查询如下:
const { loading, data } = useQuery(GET_USER_QUERY, {
variables: { id: userId },
});
以及我们的状态更新钩子如下:
useEffect(() => {
if (data) {
// update state here
}
}, [data]);
要强制触发状态更新钩子,我们可以在查询中添加refetchQueries选项:
const { loading, data } = useQuery(GET_USER_QUERY, {
variables: { id: userId },
refetchQueries: [{ query: GET_USER_QUERY, variables: { id: userId } }],
});
这里我们将refetchQueries选项设置为一个查询数组,这个数组包含一个对象,这个对象指定我们要刷新的查询和它所需的变量。这将导致Apollo重新运行我们的查询并强制触发我们的状态更新钩子,即使结果来自缓存。
请注意,由于我们的状态更新钩子是使用data来更新状态的,因此请确保您的查询返回具有具有相同结构的数据以便更新状态。