【发布时间】:2019-12-17 10:46:33
【问题描述】:
我有一个用于 apollo 惰性查询的自定义 debounce 钩子:
import {useLazyQuery} from '@apollo/react-hooks';
import debounce from "lodash/debounce";
export function useDebouncedQuery(schema) {
const [doQuery, {...rest}] = useLazyQuery(schema);
const query = React.useCallback(debounce(doQuery, 1000), []);
return [query, {
...rest
}]
}
除了onCompleted 选项之外,这有效。像这样实现钩子时:
const [doQuery] = useDebouncedQuery(query);
doQuery({
onCompleted: data => {
console.log(data);
}
})
...onCompleted 选项不会触发。但是,如果我将钩子更改为:
export function useAsyncSelectQuery(schema, options) {
const [doQuery, {...rest}] = _useLazyQuery(schema, options);
...
.. 并像这样实现它,它的工作原理:
const [doQuery] = useDebouncedQuery(query, {
onCompleted: data => {
console.log(data);
}
});
这是为什么?难道我做错了什么?我有单独的逻辑需要处理在不同位置传递给onCompleted 的数据,因此在初始化查询时我无法传递该选项。非常感谢任何帮助。
【问题讨论】:
标签: apollo-client react-apollo-hooks