javascript - 使用 Apollo 客户端进行 useMutation 后未触发 useEffect

标签 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不会更新数据。

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

最佳答案

查看 docs 中的 notifyOnNetworkStatusChange :

Let's return to our refetching example from the previous section. If you click the refetch button, you'll see that the component doesn't re-render until the new data arrives. What if we want to indicate to the user that we're refetching the photo?

我认为这与您的具体用例有关。然后,您可以从 useQuery 添加 networkStatus 作为 useEffect 依赖项。

关于javascript - 使用 Apollo 客户端进行 useMutation 后未触发 useEffect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60343088/

相关文章:

c# - 如何在 MasterPage 中包含 JavaScript?

javascript - JavaScript 和 DOM 究竟是如何工作的?

javascript - 每个 DataTable 行的编辑按钮,无法传递数据

reactjs - 通过单击在另一个组件中呈现的元素来打开 <Modal>

javascript - 声明式与编程式 GraphQL

javascript - 如何在 JavaScript 中调用 Python 变量?

node.js - React 中模型更改 11 次后 Froala 编辑器崩溃

javascript - 边框图像圆锥渐变示例在 React 中不起作用

android - 如何在使用 Apollo 生成代码时修复 'main GraphQL source' 错误?

vue.js - 使用 vuex 的 Apollo 分页