2

好的,我了解 React ApollouseLazyQuery仅在调用第一个参数时才执行。但我很失望地得知在那之后它的行为就像useQuery.

useLazyQuery那么:火灾时如何控制?我的用例非常简单:我有一个“自动完成”搜索栏。我不想查询输入何时为空。我可以在第一次“空虚”时轻松做到这一点,但是当用户删除整个输入时,我找不到禁用查询的方法。

4

2 回答 2

3

好的,甚至在我发布之前就找到了答案:)

看起来如果您的查询有变量,Apollo Client 在您提供它们之前不会运行它。所以对于我的用例:

const [execQuery, {data}] = useLazyQuery (QUERY_SEARCH)
useEffect (() => {
  str && (() => {
    execQuery ({variables: {str}})
  })()
}, [str])

const results = R.isEmpty (str) ? null : data
于 2019-10-14T15:56:15.527 回答
0

我要继续偷@Daniel的答案:)

下面的代码实现了目标

const

skip = R.complement (H.isNotNilOrEmpty) (str),

{data} = useQuery (QUERY_SEARCH, {variables: {str}, skip}),

很抱歉使用未定义的变量 R 和 H 但希望方法名称是描述性的

于 2019-10-15T07:28:49.763 回答