Apollo 查询在页面刷新时运行,但不使用反应路由器导航?
Posted
技术标签:
【中文标题】Apollo 查询在页面刷新时运行,但不使用反应路由器导航?【英文标题】:Apollo query runs on page refresh but not with react router navigation? 【发布时间】:2018-07-30 10:58:17 【问题描述】:我正在使用 React、Apollo 和 Graphcool。我有一个帐户页面,我需要在其中查询已登录用户的详细信息:
const loggedInUser = gql`
query
loggedInUser
id
`;
登录是在单独的页面上完成的。如果用户随后导航或被自动重定向(都使用 React Router)到帐户页面,则查询返回为 null。如果我对页面进行硬刷新,那么登录的用户 ID 将从查询中成功返回。
我不确定为什么会这样。我不认为这可能是竞争条件,因为您可以在 10 秒后导航到帐户页面,除非您刷新,否则它仍然不会返回用户 ID。
我需要用户 resetStore 吗?这对我来说可能很昂贵,因为需要再次获取许多不会更改的数据。
【问题讨论】:
【参考方案1】:我需要在用户登录后重新获取查询,因为 Apollo 缓存了之前的 null 结果。我将此添加到登录功能中,现在可以使用。
// I added this:
await this.props.loggedInUser.refetch();
// redirect user
this.setState(
redirect: true,
);
【讨论】:
以上是关于Apollo 查询在页面刷新时运行,但不使用反应路由器导航?的主要内容,如果未能解决你的问题,请参考以下文章
将 refetchQueries 与 apollo 一起使用并做出反应
为啥我在刷新页面时没有显示来自 apollo 服务器的数据?