title: Apollo useQuery() - "refetch" is ignored if the response is the same
body: <p>I am trying to use Apollo-client to pull my users info and stuck with this problem:</p>
  
  <p>I have this <code>Container</code> component responsible for pulling the user's data (not authentication) once it is rendered. User may be logged in or not, the query returns either <code>viewer = null</code> or <code>viewer = {...usersProps}</code>.</p>
  
  <p>Container makes the request <code>const { data, refetch } = useQuery&lt;Viewer&gt;(VIEWER);</code>, successfully receives the response and saves it in the <code>data</code> property that I use to read <code>.viewer</code> from and set it as my current user.</p>
  
  <p>Then the user can log-out, once they do that I clear the <code>Container</code>'s user property <code>setUser(undefined)</code> (not showed in the code below, not important).</p>
  
  <p>The problem occurred when I try to re-login: Call of <code>refetch</code> triggers the <code>graphql</code> http request but since it returns the same data that was returned during the previous initial login - <code>useQuery()</code> ignores it and does not update <code>data</code>. Well, technically there could not be an update, the data is the same. So my code <code>setUser(viewer);</code> does not getting executed for second time and user stucks on the login page.</p>
  
  <pre><code>  const { data, refetch } = useQuery&lt;Viewer&gt;(VIEWER);
  
    const viewer = data &amp;&amp; data.viewer;
  
    useEffect(() =&gt; {
      if (viewer) {
        setUser(viewer);
      }
  
    }, [ viewer ]);
  
  </code></pre>
  
  <p>That query with the same response ignore almost makes sense, so I tried different approach, with callbacks:</p>
  
  <pre><code>  const { refetch } = useQuery&lt;Viewer&gt;(VIEWER, {
      onCompleted: data =&gt; {
        if (data.viewer) {
          setUser(data.viewer);
        }
      }
    });
  </code></pre>
  
  <p>Here I would totally expect Apollo to call the <code>onCompleted</code> callback, with the same data or not... but it does not do that. So I am kinda stuck with this - how do I make Apollo to react on my query's <code>refetch</code> so I could re-populate <code>user</code> in my <code>Container</code>'s state?</p>