如何以编程方式执行useLazyQuery?

问题描述 投票:0回答:1

[好,我知道React Apollo的useLazyQuery仅在其第一个参数被调用后才执行。但令我失望的是,得知它的行为类似于useQuery

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

apollo react-apollo
1个回答
0
投票

甚至在我发布之前就已经找到答案了:)

好像您的查询中包含变量,在您提供变量之前,Apollo Client不会运行它。因此,对于我的用例:

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

const results = R.isEmpty (str) ? null : data
© www.soinside.com 2019 - 2024. All rights reserved.