在探索与@ apollo / client的反应时,我使用useQuery
进行首次加载,使用useLazyQuery
进行按需加载(经过一些操作,刷新,创建等),如下所示:>
const { data} = useQuery(GET_POSTS_QUERY);
const [fetchPosts, { data: fetchedposts}] = useLazyQuery(GET_POSTS_QUERY);
我正在JSX标记中渲染data
,但是由于名称冲突,我需要按需获取数据到名为fetchedposts
的其他const。
在这种情况下,我将如何更新UI上的数据?我的用户界面正在使用data
而不是fetchedposts
!
有什么办法可以合并两个状态。还是我应该使用useState
进入单独的状态并使用这些状态更新相同的状态?
答案 0 :(得分:2)
经过更多研究,我知道可以利用useQuery返回的refetch
函数来执行此类操作!
所以我得到的是,在这种情况下,我可以完全避免使用useLazyQuery,而只需使用refetch。
const { data, loading, error, refetch} = useQuery(GET_POSTS_QUERY);
.
.
.
<button className="btn btn-raised btn-primary" onClick={() => refetch()}>
Fetch Posts on Demand
</button>