apollo-client 用于发出多个请求以进行实时搜索
apollo-client used to make multiple requests to make a real-time search
我们正在使用 Apollo 在应用程序中开发一个搜索引擎,我们不知道如何开发一个实时搜索引擎,在每次按下键盘时向服务器发出请求。
文档上说我们必须使用新的 <Query />
组件,但我发现这种情况最适合触发手动查询:https://www.apollographql.com/docs/react/essentials/queries.html#manual-query
不知道我说的对不对,或者我们应该换个方式使用它。
谢谢!
正如在您分享的 link 中所说,如果您想延迟触发查询直到用户执行某个操作(您的情况),例如单击按钮,您想要使用ApolloConsumer
组件并直接调用 client.query()
。
Query
组件不能在这种情况下使用,因为当 React 挂载 Query
组件时,Apollo 客户端会在渲染期间自动触发您的查询。
更新
使用 Apollo Client V2.6,现在可以使用挂钩手动对服务器进行查询。您想要的钩子是 useLazyQuery.
你会有这样的东西;
const [onSearch, { called, loading, data }] = useLazyQuery(
SEARCH_QUERY,
{ variables: { searchText: state.searchText } }
);
然后,只要您的文本在 useEffect
中发生变化,您就可以调用 onSearch
函数,如下所示。
useEffect(() => {
onSearch()
}, [state.searchText])
请注意,您可能想要 dounce
您的 onSearch
功能,这样您就不会在每次击键时都敲打您的服务器。
我们正在使用 Apollo 在应用程序中开发一个搜索引擎,我们不知道如何开发一个实时搜索引擎,在每次按下键盘时向服务器发出请求。
文档上说我们必须使用新的 <Query />
组件,但我发现这种情况最适合触发手动查询:https://www.apollographql.com/docs/react/essentials/queries.html#manual-query
不知道我说的对不对,或者我们应该换个方式使用它。
谢谢!
正如在您分享的 link 中所说,如果您想延迟触发查询直到用户执行某个操作(您的情况),例如单击按钮,您想要使用ApolloConsumer
组件并直接调用 client.query()
。
Query
组件不能在这种情况下使用,因为当 React 挂载 Query
组件时,Apollo 客户端会在渲染期间自动触发您的查询。
更新
使用 Apollo Client V2.6,现在可以使用挂钩手动对服务器进行查询。您想要的钩子是 useLazyQuery.
你会有这样的东西;
const [onSearch, { called, loading, data }] = useLazyQuery(
SEARCH_QUERY,
{ variables: { searchText: state.searchText } }
);
然后,只要您的文本在 useEffect
中发生变化,您就可以调用 onSearch
函数,如下所示。
useEffect(() => {
onSearch()
}, [state.searchText])
请注意,您可能想要 dounce
您的 onSearch
功能,这样您就不会在每次击键时都敲打您的服务器。