好的,我了解 React ApollouseLazyQuery
仅在调用第一个参数时才执行。但我很失望地得知在那之后它的行为就像useQuery
.
useLazyQuery
那么:火灾时如何控制?我的用例非常简单:我有一个“自动完成”搜索栏。我不想查询输入何时为空。我可以在第一次“空虚”时轻松做到这一点,但是当用户删除整个输入时,我找不到禁用查询的方法。
好的,我了解 React ApollouseLazyQuery
仅在调用第一个参数时才执行。但我很失望地得知在那之后它的行为就像useQuery
.
useLazyQuery
那么:火灾时如何控制?我的用例非常简单:我有一个“自动完成”搜索栏。我不想查询输入何时为空。我可以在第一次“空虚”时轻松做到这一点,但是当用户删除整个输入时,我找不到禁用查询的方法。
好的,甚至在我发布之前就找到了答案:)
看起来如果您的查询有变量,Apollo Client 在您提供它们之前不会运行它。所以对于我的用例:
const [execQuery, {data}] = useLazyQuery (QUERY_SEARCH)
useEffect (() => {
str && (() => {
execQuery ({variables: {str}})
})()
}, [str])
const results = R.isEmpty (str) ? null : data
我要继续偷@Daniel的答案:)
下面的代码实现了目标
const
skip = R.complement (H.isNotNilOrEmpty) (str),
{data} = useQuery (QUERY_SEARCH, {variables: {str}, skip}),
很抱歉使用未定义的变量 R 和 H 但希望方法名称是描述性的