[英]Apollo Client: refetch data with modified variables, useQuery or useLazyQuery?
I have a table showing data from server.我有一个表格显示来自服务器的数据。 The data is retrieved using Apollo Client query.
使用 Apollo Client 查询检索数据。
The table has multiple filters and a search box.该表有多个过滤器和一个搜索框。 And all filters and text in the search are save in local storage.
并且搜索中的所有过滤器和文本都保存在本地存储中。
The table and the fetch works like:表和提取的工作原理如下:
localstorage
, build variables for fetch (offset, limit, ...)localstorage
读取,为获取构建变量(偏移量,限制,...)localstorage
localstorage
My question is: should I use useQuery
or useLazyQuery
for this purpose.我的问题是:为此我应该使用
useQuery
还是useLazyQuery
。
With useQuery
, I may could do:使用
useQuery
,我可以这样做:
// first fetch
const {data, loading, refetch} = useQuery(gql, { variables: {...filters from localstorage} })
// when filters changed
useEffect(() => {
refetch({variable: {...changed filters}})
}, [filters])
For modified filters, is it possible to do refetch({variables: {...modified filters}})
?对于修改后的过滤器,是否可以执行
refetch({variables: {...modified filters}})
?
And with useLazyQuery
, I may do:使用
useLazyQuery
,我可以这样做:
const [getData, {data, loading, refetch}] = useLazyQuery(gql)
// first fetch
useEffect(() => {
getData({variables: {...filters from localstorage}})
}, [])
// when filters changed
useEffect(() => {
refetch({variable: {...changed filters}}) // ?
// or
getData({variables: {...modified filters}}) // ?
}, [filters])
refetch
or getData
, which should I use? refetch
或getData
,我应该使用哪个?
I think you should just use useQuery , but instead of keeping your filters in localeStorage, keep it also in a locale React state.我认为你应该只使用useQuery ,但不要将过滤器保存在 localeStorage 中,而是将它也保持在 locale React 状态。 So when you update the filters state, useQuery will know and refetch the query with new parameters.
因此,当您更新过滤器状态时,useQuery 将知道并使用新参数重新获取查询。 And you don't need separate useEffect to trigger the refetch.
而且您不需要单独的 useEffect 来触发重新获取。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.