我们正在使用Apollo在应用程序内开发搜索引擎,但我们不知道如何开发实时搜索引擎,该实时搜索引擎每次按下键盘都会向服务器发出请求。
在文档中它说我们必须使用新的<Query />
组件,但我发现这种情况最适合触发手动查询:https://www.apollographql.com/docs/react/essentials/queries.html#manual-query
我不知道我是否正确,或者我们应该以其他方式使用它。
谢谢!
答案 0 :(得分:1)
就像您共享的链接上所说的那样,如果您要延迟触发查询直到用户执行某项操作(您的情况),例如单击一个按钮,则要使用TogglePaneButtonCollapsed
组件而是直接致电ApolloConsumer
。
client.query()
组件在这种情况下不能使用,因为当React挂载Query
组件时,Apollo Client会在渲染过程中自动触发查询。
答案 1 :(得分:0)
更新
使用Apollo Client V2.6,现在可以使用挂钩手动向服务器查询。您想要的钩子是useLazyQuery。
您会有类似的东西
const [onSearch, { called, loading, data }] = useLazyQuery(
SEARCH_QUERY,
{ variables: { searchText: state.searchText } }
);
然后,您的文本在onSearch
内更改时,您可以调用useEffect
函数,如下所示。
useEffect(() => {
onSearch()
}, [state.searchText])
请注意,您可能想dounce
使用onSearch
函数,以免您每次敲击键盘都不会碰服务器。