[好,我知道React Apollo的useLazyQuery
仅在其第一个参数被调用后才执行。但令我失望的是,得知它的行为类似于useQuery
。
所以:如何控制useLazyQuery
何时触发?我的用例非常简单:我有一个“自动完成”搜索栏。我不想在输入为空时查询。我可以在第一个“空”上轻松地做到这一点,但是当用户删除整个输入时,我找不到找到禁用查询的方法。
甚至在我发布之前就已经找到答案了:)
好像您的查询中包含变量,在您提供变量之前,Apollo Client不会运行它。因此,对于我的用例:
const [execQuery, {data}] = useLazyQuery (QUERY_SEARCH)
useEffect (() => {
str && (() => {
execQuery ({variables: {str}})
})()
}, [str])
const results = R.isEmpty (str) ? null : data