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