Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 基于状态的Apollo客户端跳过查询_Reactjs_React Apollo_Apollo Server_React Apollo Hooks - Fatal编程技术网

Reactjs 基于状态的Apollo客户端跳过查询

Reactjs 基于状态的Apollo客户端跳过查询,reactjs,react-apollo,apollo-server,react-apollo-hooks,Reactjs,React Apollo,Apollo Server,React Apollo Hooks,使用Apollo客户端,我看到了如何跳过基于道具的查询,如图所示 但是如果我想跳过基于状态变化的查询怎么办 我有一个查询设置为每5秒轮询一次,但我希望在对话打开时暂停此轮询(以避免重新渲染对话的父组件,导致对话重新渲染,然后必须将光标聚焦到之前的位置) 我试过了,但没用。我想要的行为可能吗 另外,还尝试将对话打开/关闭状态移动到父组件,但也不起作用 const [scoreRunDialougeOpen, setScoreRunDialougeOpen] = useState(false)

使用Apollo客户端,我看到了如何跳过基于道具的查询,如图所示

但是如果我想跳过基于状态变化的查询怎么办

我有一个查询设置为每5秒轮询一次,但我希望在对话打开时暂停此轮询(以避免重新渲染对话的父组件,导致对话重新渲染,然后必须将光标聚焦到之前的位置)

我试过了,但没用。我想要的行为可能吗

另外,还尝试将对话打开/关闭状态移动到父组件,但也不起作用

const [scoreRunDialougeOpen, setScoreRunDialougeOpen] = useState(false)  

const { loading, data, error } = useQuery(GET_SELECTED_HEAT, {
    variables: {
        id: eventId
    },
    pollInterval: scoreRunDialougeOpen ? undefined : 5000,
    skip: scoreRunDialougeOpen,
});

嘿,伙计们,我最终没有停止投票就成功了。 我正在简化一个沙盒项目的演示,我让它完全按照我想要的方式工作

最后,我真正想要的是对话框在打开时不被重新呈现(我认为停止轮询是实现这一点的简单方法,但似乎不是)

因此,您可以看到,我所做的只是将对话框移动到与UseQuery相同的组件中,它工作正常(如对话框中未重新渲染)

在我的原始解决方案中,包含对话框的子组件作为道具接收查询数据,因此当数据发生更改时,显然会重新呈现