"OnCompleted" 在 useMutation 中使用 "refetchQueries" 时对 useQuery 不起作用,如何解决?

"OnCompleted" does not work for useQuery when using "refetchQueries" in useMutation, how to fix it?

使用useMutation时,我添加了refetchQueries来获取修改后的数据。

let [saveTemplate, { loading}] = useMutation(gql`
  ${templateFragment}
  mutation saveTemplate ($template:saveTemplateTemplatesType!,$token:String!){
    saveTemplate(template:$template,token:$token){
    ...template
    }
  }
  `,{refetchQueries:["getUserData"],onError:()=>{message.warn("error")},onCompleted:()=>{console.log("success")}});

向服务器发出变更请求。数据返回了,但是useQueries的onCompleted没有生效

let { loading } = useQuery(
    gql`
      ${templateFragment}
      query getUserData($userToken: String) {
        getUsersData(userToken: $userToken) {
          templates {
            ...template
          }
          token
        }
      }
    `,
    {
      variables: {
        userToken: userToken ? userToken.replace(/"/g, ``) : null,
      },
      onCompleted: (data) => {
        props.isAuthAC(
          true,
          data.getUsersData.templates,
          data.getUsersData.token
        );
      },
      onError: () => console.log("err"),
    }
  );

在 github 上找到了解决方案。您需要添加到 useQuery: notifyOnNetworkStatusChange: true.

  let { loading } = useQuery(
    gql`
      ${templateFragment}
      query getUserData($userToken: String) {
        getUsersData(userToken: $userToken) {
          templates {
            ...template
          }
          token
        }
      }
    `,
    {
      variables: {
        userToken: userToken ? userToken.replace(/"/g, ``) : null,
      },
      notifyOnNetworkStatusChange: true,
      onCompleted: (data) => {
        props.isAuthAC(
          true,
          data.getUsersData.templates,
          data.getUsersData.token
        );
      },
      onError: () => console.log("err"),
    }
  );