title: Unexpected result from apollo react's useQuery method
body: <p>For a project, where i've implemented authentication by running a GraphQL query inside a  <code>AuthenticationProvider</code> from a context, I noticed the query is fetching data twice.</p>
  <pre><code>const AuthenticationProvider: FC = props =&gt; {  
    const {
      loading,
      data 
    } = useQuery(MeQuery)
      
    if (loading) return null
      
    return &lt;AuthenticationContext.Provider value={{user: data?.me || null}} {...props} /&gt;
  }
  </code></pre>
  <p>However the query runs perfect, I still wanted to know why it fetches the data twice. I did some googling, and came across this issue, where <a href="https://github.com/trojanowski/react-apollo-hooks/issues/157#issuecomment-491151909" rel="nofollow noreferrer">this answer</a> was provided. I tried the same thing, with the <code>skip</code> option, based if the data is loaded.</p>
  <pre><code>const [skip, setSkip] = useState(false)
  
  const {
    loading,
    data 
  } = useQuery(MeQuery, { skip })
  
  useEffect(() =&gt; {
    if (!loading &amp;&amp; data?.me) {
       setSkip(true)
    }
  }, [loading, data])
  
  // ...
  </code></pre>
  <p>But when logging in, it stopped working.</p>
  <pre><code>const useLoginMutation = () =&gt; useMutation(LOGIN_QUERY, { update: (cache, { data }) =&gt; {
    if (!data) {
      return null
    }
  
    cache.writeQuery({ query: MeQuery, data: { me: data.login } }) 
  }
  })
  </code></pre>
  <p>The cache still get's updated with the right values, but doesn't retrieve the user anymore (null).</p>
  <pre><code>const { user } = useContext(AuthenticationContext)
  </code></pre>
  <p>What am I missing here? It seems the query did run and fetched the correct data.</p>