apollo客户端曾经发出多个请求以进行实时搜索

时间:2018-10-09 11:21:59

标签: reactjs apollo react-apollo apollo-client

我们正在使用Apollo在应用程序内开发搜索引擎,但我们不知道如何开发实时搜索引擎,该实时搜索引擎每次按下键盘都会向服务器发出请求。

在文档中它说我们必须使用新的<Query />组件,但我发现这种情况最适合触发手动查询:https://www.apollographql.com/docs/react/essentials/queries.html#manual-query

我不知道我是否正确,或者我们应该以其他方式使用它。

谢谢!

2 个答案:

答案 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函数,以免您每次敲击键盘都不会碰服务器。