运行突变后重新获取查询
Posted
技术标签:
【中文标题】运行突变后重新获取查询【英文标题】:refetchQueries after running a mutation 【发布时间】:2021-01-02 05:56:14 【问题描述】:以前,我运行的突变有点像这样:
export const useEditLocationName = () =>
const [editFavoriteLocationName] = useEditFavoriteLocationNameMutation(
refetchQueries: [ query: GetMyFavouritePlacesDocument],
awaitRefetchQueries: true,
onCompleted: () =>
Alert.alert('Name');
,
onError: () =>
Alert.alert('Oops');
,
);
const editLocationName = async (
favouritePlaceId: number,
customisedName: string,
) =>
editFavoriteLocationName(
variables:
id: favouritePlaceId,
label: customisedName
,
);
return null;
;
return editLocationName;
;
每次我运行这个突变时,useGetMyFavouritePlacesQuery
的结果,即GetMyFavouritePlacesDocument
都会自动更新(无论在哪里使用这个查询)。这很有效,然后useGetMyFavouritePlacesQuery
不需要任何参数。但是,既然 api 发生了一些变化,我需要将 id
传递给查询,以便它返回结果。我该怎么做?
我不能将变量直接传递给GetMyFavouritePlacesDocument
,我也不能在这里使用钩子。每次运行此突变时,我还能如何有效地重新获取数据?
【问题讨论】:
【参考方案1】:如果您在突变响应中返回 id 以及可能有关数据的一些其他唯一数据,那么 Apollo 将自动更新缓存
这是一个例子https://www.freecodecamp.org/news/how-to-update-the-apollo-clients-cache-after-a-mutation-79a0df79b840/
【讨论】:
这似乎有效,但它给了我这个错误***.com/questions/63423578/…,即使我已经返回了唯一的 ID 和其他一些信息。该错误建议我定义一个自定义合并函数。我怎么能这样做? 我在这里添加了更多代码和细节***.com/questions/63918330/…以上是关于运行突变后重新获取查询的主要内容,如果未能解决你的问题,请参考以下文章