javascript Apollo useQuery并不总是触发函数组件的重新渲染

xhv8bpkk  于 2023-03-21  发布在  Java
关注(0)|答案(1)|浏览(117)

这是我的功能组件,它使用了来自@apollo/clientuseQuery

function MyComponent(props) {
  const { data } = useQuery<MarketScannerSearchProps>(
    MARKET_SCANNER_SEARCH_PROPS_QUERY,
    {
      onCompleted: (data) => {
        console.log("completed", data)
      },
    }
  )
  console.log("data", data)

  // ... rest of function + return rendered result
}

我在我的控制台里看到这个:

data undefined
data undefined

completed {marketScannerSearchProps: {…}}

为什么最后没有data {marketScannerSearchProps: {…}}
这并不总是可复制的,只发生在我的应用程序的每5次重新加载左右。这是它工作时的样子:

data undefined
data {marketScannerSearchProps: {…}}
completed {marketScannerSearchProps: {…}}

因此,不知何故,第二次渲染组件时,数据就在那里,但并不总是如此,如果数据在第二次渲染时不在那里,它以后就不会更新它。
apollo不是应该在每次查询完成后触发一次重新渲染吗?我在这里遗漏了什么?

**编辑:**我想这个问题可能已经解决了。我关闭并打开了几次Chrome开发工具,现在它似乎已经解决了。会不会是Apollo客户端缓存出错了?

ee7vknir

ee7vknir1#

我也有同样的问题。
这是React Dev Tools的问题(我尝试过逐步删除各种Chrome扩展,但始终发现React Dev Tools是罪魁祸首)。目前最好的解决方案是禁用React Dev Tools扩展,关闭Chrome Dev Tools,重新加载页面,然后一切正常。
由于这是React Dev Tools的一个问题,我将在他们的repo上创建一个GitHub问题,并使用链接更新这个答案,以便将来任何人都可以找到它。

相关问题