Apollo 查询在页面刷新时运行但不使用 React 路由器导航?
Apollo query runs on page refresh but not with react router navigation?
我正在使用 React、Apollo 和 Graphcool。我有一个帐户页面,我需要在其中查询登录用户的详细信息:
const loggedInUser = gql`
query {
loggedInUser {
id
}
}
`;
登录是在单独的页面上完成的。如果用户随后导航或被自动重定向(均使用 React Router)到帐户页面,则查询返回为 null。如果我硬刷新页面,则登录用户 ID 会成功地从查询中返回。
我不确定为什么会这样。我不认为这可能是竞争条件,因为您可以在 10 秒后导航到帐户页面,但除非您刷新,否则它仍然不会 return 用户 ID。
我需要用户 resetStore 吗?这对我来说可能是昂贵的,因为很多不会改变的数据将需要再次获取。
我需要在用户登录后重新获取查询,因为 Apollo 缓存了之前的 null 结果。我将其添加到登录功能中,现在可以使用了。
// I added this:
await this.props.loggedInUser.refetch();
// redirect user
this.setState({
redirect: true,
});
我正在使用 React、Apollo 和 Graphcool。我有一个帐户页面,我需要在其中查询登录用户的详细信息:
const loggedInUser = gql`
query {
loggedInUser {
id
}
}
`;
登录是在单独的页面上完成的。如果用户随后导航或被自动重定向(均使用 React Router)到帐户页面,则查询返回为 null。如果我硬刷新页面,则登录用户 ID 会成功地从查询中返回。
我不确定为什么会这样。我不认为这可能是竞争条件,因为您可以在 10 秒后导航到帐户页面,但除非您刷新,否则它仍然不会 return 用户 ID。
我需要用户 resetStore 吗?这对我来说可能是昂贵的,因为很多不会改变的数据将需要再次获取。
我需要在用户登录后重新获取查询,因为 Apollo 缓存了之前的 null 结果。我将其添加到登录功能中,现在可以使用了。
// I added this:
await this.props.loggedInUser.refetch();
// redirect user
this.setState({
redirect: true,
});