Google Maps React/Redux component
<p>My React/Redux component for working with Google Maps:</p>

<pre><code>import React, { Component, PropTypes } from 'react'
import { connect } from 'react-redux'

import { changeMapCenter } from '../actions'

class Map extends Component {

  componentDidMount() {
    let script = document.createElement('script')

    script.setAttribute('type', 'text/javascript')
    script.setAttribute('src', 'https://maps.googleapis.com/maps/api/js?key=AIzaSyCXg-YGJF&amp;callback=initMap')
    document.getElementsByTagName('head')[0].appendChild(script)

    window.initMap = () =&gt; {
      this.map = new google.maps.Map(document.getElementById('map'), {
        center: this.props.defaultCenter,
        zoom: this.props.defaultZoom
      });

      this.map.addListener('center_changed', (event) =&gt; {
        let center = {
          lat: this.map.getCenter().lat(),
          lng: this.map.getCenter().lng()
        }
        this.props.onMapCenterChanging(center)
      });
    }
  }

  render() {
    return (
      &lt;div id='map'&gt;&lt;/div&gt;
    );  
  }
}

const mapStateToProps = (state) =&gt; {
  return {
    mapPoints: state.mapPoints
  }
}

const mapDispatchToProps = (dispatch) =&gt; {
  return {
    onMapCenterChanging: (center) =&gt; {
      dispatch(changeMapCenter(center))
    }    
  }
}

export default connect(mapStateToProps, mapDispatchToProps)(Map)
</code></pre>

<p>As you can see now this component just initializes map and listens map center changing. Now I need render some markers (mapPoints). From Google API Documentation I can do it (for example):</p>

<pre><code>  var marker = new google.maps.Marker({
    position: myLatlng,
    map: map,
    title: 'Click to zoom'
  });
</code></pre>

<p>But how can I do in 'React-style'? Because drawing marker is not 'render' HTML, it's just calling JS Google Maps API function. I can put this logic in 'initMap' function, but my 'mapPoints' can change. Should I put JS logic (removing deleted points / draw new points) in 'render' function? Thanks!</p>