使用Apollo Client在useMutation之后未触发useEffect

时间:2020-02-21 16:50:37

标签: javascript reactjs graphql apollo react-apollo

我有一个父组件,它具有:

  const { loading, error, data } = useQuery(GET_DATA, {
    notifyOnNetworkStatusChange: true
  });

  // Handle data
  useEffect(() => {
    if (loading || error) return;
    setZendeskData(data);
  }, [loading, error, data]);

然后在子组件中,我拥有:

  const [createItem] = useMutation(CREATE_SESSION, {
    refetchQueries: [{ query: GET_DATA }]
  });

当调用createItem并运行refetchQuery时,父组件中的useEffect不会更新数据。

确保数据始终是最新的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

docsnotifyOnNetworkStatusChange

让我们回到上一节中的重新获取示例。如果 您单击refetch按钮,您会看到该组件没有 重新渲染直到新数据到达。如果我们要表明要怎么办 用户正在重新获取照片?

我认为这与您的确切用例有关。然后,您将从networkStatus中添加useQuery作为useEffect依赖项。