1

我正在使用 React、Apollo 和 Graphcool。我有一个帐户页面,我需要在其中查询已登录用户的详细信息:

const loggedInUser = gql`
    query {
        loggedInUser {
            id
        }
    }
`;

登录是在单独的页面上完成的。如果用户随后导航或被自动重定向(都使用 React Router)到帐户页面,则查询返回为 null。如果我对页面进行硬刷新,则登录的用户 ID 会成功从查询中返回。

我不确定为什么会这样。我不认为这可能是竞争条件,因为您可以在 10 秒后导航到帐户页面,除非您刷新,否则它仍然不会返回用户 ID。

我需要用户 resetStore 吗?这对我来说可能很昂贵,因为需要再次获取许多不会更改的数据。

4

1 回答 1

0

我需要在用户登录后重新获取查询,因为 Apollo 缓存了之前的 null 结果。我将此添加到登录功能中,现在可以使用。

// I added this: 
await this.props.loggedInUser.refetch();

// redirect user 
this.setState({
    redirect: true,
});
于 2018-02-21T01:16:11.167 回答