这是我的功能组件,它使用了来自@apollo/client
的useQuery
:
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客户端缓存出错了?
1条答案
按热度按时间ee7vknir1#
我也有同样的问题。
这是React Dev Tools的问题(我尝试过逐步删除各种Chrome扩展,但始终发现React Dev Tools是罪魁祸首)。目前最好的解决方案是禁用React Dev Tools扩展,关闭Chrome Dev Tools,重新加载页面,然后一切正常。
由于这是React Dev Tools的一个问题,我将在他们的repo上创建一个GitHub问题,并使用链接更新这个答案,以便将来任何人都可以找到它。