title: Apollo + React: data not appearing in componentDidMount lifecycle
body: <p>I've got a React app that uses Redux for some in-app state management and Apollo for fetching data from a server.  In my network tab, my graphql queries are succeeding and the response is what I expect, but when I try to reference the data in the componentDidMount lifecycle of the React Component, the data isn't there and the loading state is 'true'.</p>
  
  <p>If I move my code to a different lifecycle function, like render(), the data does appear, but I need it to work in componentDidMount.  I'm new to Apollo.</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-html lang-html prettyprint-override"><code>import React, { Component } from "react";
  import PropTypes from "prop-types";
  import { connect } from "react-redux";
  
  import SdkMap from "@boundlessgeo/sdk/components/map";
  import SdkZoomControl from "@boundlessgeo/sdk/components/map/zoom-control";
  
  import * as mapActions from "@boundlessgeo/sdk/actions/map";
  
  import { graphql } from "react-apollo";
  import gql from "graphql-tag";
  
  function mapStateToProps(state) {
    return {
      map: state.map
    };
  }
  
  class Map extends Component {
    static contextTypes = {
      store: PropTypes.object.isRequired
    };
  
    componentDidMount() {
      const store = this.context.store;
      store.dispatch(mapActions.setView([-95.7129, 37.0902], 3));
  
      /* ADD SITES LAYER */
      store.dispatch(
        mapActions.addSource("sites_src", {
          type: "geojson",
          data: {
            type: "FeatureCollection",
            features: []
          }
        })
      );
  
      store.dispatch(
        mapActions.addLayer({
          id: "sites",
          source: "sites_src",
          type: "circle",
          paint: {
            "circle-radius": 3,
            "circle-color": "blue",
            "circle-stroke-color": "white"
          }
        })
      );
      
      console.log(this.props.data);  //response doesn't include query fields
      if (this.props.data.allSites) {
        let sites = this.props.data.allSites.edges;
  
        for (let i = 0; i &lt; sites.length; i++) {
          let site = sites[i].node;
          let geojson = site.geojson;
          if (geojson) {
            console.log(site);
            const feature = {
              type: "Feature",
              geometry: geojson,
              properties: {
                id: site.id
              }
            };
            store.dispatch(mapActions.addFeatures("sites_src", feature));
          }
        }
      }
    }
  
    render() {
      const store = this.context.store;
  
      return (
        &lt;SdkMap store={store} &gt;
          &lt;SdkZoomControl /&gt;
        &lt;/SdkMap&gt;
      );
    }
  }
  
  const query = graphql(
    gql`
      query {
        allSites {
          edges {
            node {
              id
              projectId
              location
              areaAcres
              geojson
            }
          }
        }
      }
    `
  );
  
  const MapWithRedux = connect(mapStateToProps)(Map);
  const MapWithApollo = query(MapWithRedux);
  
  export default MapWithApollo;</code></pre>
  </div>
  </div>
  </p>