title: React-apollo mutation writeQuery doesn't update ui
body: <p>I learn GraphQL with howtographql.com, but when use mutation for vote the UI doesn't update. I use readQuery and writeQuery on store, after search I test  use readQuery and writeQuery on client but doesn't work again.</p>
  
  <p>Package use and version :<br>
  ├─ apollo-boost@0.4.3<br>
  ├─ apollo-cache-inmemory@1.6.2<br>
  ├─ apollo-cache@1.3.2<br>
  ├─ apollo-client@2.6.3<br>
  ├─ apollo-link-context@1.0.18<br>
  ├─ apollo-link-error@1.1.11<br>
  ├─ apollo-link-http-common@0.2.14<br>
  ├─ apollo-link-http@1.5.15<br>
  ├─ apollo-link@1.2.12<br>
  ├─ apollo-utilities@1.3.2<br>
  ├─ react-apollo@2.5.8  </p>
  
  <p>LinkList.js</p>
  
  <pre><code>import React, { Component } from 'react';
  import Link from './Link';
  import { Query } from 'react-apollo';
  import gql from 'graphql-tag';
  
  export const FEED_QUERY = gql`
      {
          feed {
              links {
                  id
                  createdAt
                  url
                  description
                  postedBy {
                      id
                      name
                  }
                  votes {
                      id
                      user {
                          id
                      }
                  }
              }
          }
      }
  `
  
  class LinkList extends Component {
      _updateCacheAfterVote = (store, createVote, linkId) =&gt; {
          const data = store.readQuery({ query: FEED_QUERY })
  
          const votedLink = data.feed.links.find(link =&gt; link.id === linkId)
          votedLink.votes = createVote.link.votes
  
          store.writeQuery({ query: FEED_QUERY, data })
      }
      render() { 
          return (
              &lt;Query query={FEED_QUERY}&gt;
                  {({ loading, error, data }) =&gt; {
                      if (loading) return &lt;div&gt;Fetching&lt;/div&gt;
                       if (error) return &lt;div&gt;Error&lt;/div&gt;
  
                      const linksToRender = data.feed.links
  
                      return (
                          &lt;div&gt;
                              {linksToRender.map((link, index) =&gt; (
                                  &lt;Link
                                      key={link.id} 
                                      link={link} 
                                      index={index} 
                                      updateStoreAfterVote={this._updateCacheAfterVote}
                                  /&gt;
                              ))}
                          &lt;/div&gt;
                      )
                  }}
              &lt;/Query&gt;
          )
      }
  }
  
  export default LinkList
  </code></pre>
  
  <p>Link.js</p>
  
  <pre><code>import React, { Component } from 'react'
  import { AUTH_TOKEN } from '../constants'
  import { timeDifferenceForDate } from '../utils';
  import { Mutation } from 'react-apollo';
  import gql from 'graphql-tag';
  
  const VOTE_MUTATION = gql`
      mutation VoteMutation($linkId: ID!) {
          vote(linkId: $linkId) {
              id
              link {
                  votes {
                      id
                      user {
                          id
                      }
                  }
              }
              user {
                  id
              }
          }
      }
  `
  
  class Link extends Component {
      render() {
          const authToken = localStorage.getItem(AUTH_TOKEN)
          return (
              &lt;div className="flex mt2 items-start"&gt;
                  &lt;div className="flex items-center"&gt;
                      &lt;span className="gray"&gt;{this.props.index + 1}&lt;/span&gt;
                      {authToken &amp;&amp; (
                          &lt;Mutation
                              mutation={VOTE_MUTATION}
                              variables={{ linkId: this.props.link.id }}
                              update={(store, { data: { vote } }) =&gt;
                                  this.props.updateStoreAfterVote(store, vote, this.props.link.id)
                              }
                          &gt;
                              {voteMutation =&gt; (
                                  &lt;div className="ml1 gray fl1 pointer" onClick={voteMutation}&gt;
                                      ▲
                                  &lt;/div&gt;
                              )}
                          &lt;/Mutation&gt;
                      )}
                  &lt;/div&gt;
                  &lt;div className="ml1"&gt;
                      &lt;div&gt;
                          {this.props.link.description} ({this.props.link.url})
                      &lt;/div&gt;
                      &lt;div className="f6 lh-copy gray"&gt;
                          {this.props.link.votes.length} votes | by{' '}
                          {this.props.link.postedBy
                              ? this.props.link.postedBy.name
                              : 'Unknown'}{' '}
                          {timeDifferenceForDate(this.props.link.createdAt)}
                      &lt;/div&gt;
                  &lt;/div&gt;
              &lt;/div&gt;
          )
      }
  }
  
  export default Link
  </code></pre>