如何让 useQuery() 在第一次渲染以及后续事件(例如按钮单击)上触发?
据我所知,当 ReactuseQuery第一次挂载一个调用 a 的组件时,Apollo 会自动执行查询,如果我想执行该查询来响应事件,我可以使用useLazyQuery它返回一个函数,该函数可以叫做。如果我想两者都做怎么办?
不太确定我对 React hooks 的理解的哪一部分是不正确或不完整的,但我尝试过使用refetchin useQuery,这绝对允许我调用该函数,但似乎并不总是在组件安装时触发(更令人困惑的事情是有时会,有时不会)。我也在使用notifyOnNetworkStatusChange,我读到它需要refetch认识到它应该onCompleted触发useQuery.
任何帮助将不胜感激,我想我根本不了解 Hooks。谢谢!
PS我的一个例子useQuery如下:
const { refetch: refetchGetTaskTypes } = useQuery(GET_TASK_TYPES(["taskId", "taskType"]), {
notifyOnNetworkStatusChange: true,
onCompleted: (data) => {
if (data !== undefined && data.getTaskTypes !== undefined && data.getTaskTypes !== state.taskTypes) {
dispatch({
type: 'GET_TASK_TYPES',
payload: {
taskTypes: data.getTaskTypes
}
});
}
}
});
Run Code Online (Sandbox Code Playgroud)
PPS 作为一个例子,refetch有时需要调用渲染,有时则不需要,我有另一个useQuery几乎与上面相同的(具有不同的查询),它也有refetch …