【问题标题】: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,我也不能在这里使用钩子。每次运行此突变时,我还能如何有效地重新获取数据?

【问题讨论】:

    标签: javascript reactjs typescript graphql apollo


    【解决方案1】:

    如果您在突变响应中返回 id 以及可能有关数据的一些其他唯一数据,那么 Apollo 将自动更新缓存

    这是一个例子https://www.freecodecamp.org/news/how-to-update-the-apollo-clients-cache-after-a-mutation-79a0df79b840/

    【讨论】:

    猜你喜欢
    • 2021-09-10
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 2021-01-18
    • 1970-01-01
    • 2023-01-20
    • 2018-10-15
    相关资源
    最近更新 更多