diff --git a/src/Marker.js b/src/Marker.js index b4e117b5..654cad84 100644 --- a/src/Marker.js +++ b/src/Marker.js @@ -17,31 +17,30 @@ module.exports = React.createClass({ }, componentDidMount () { - var {marker} = this.state; - if (marker || !this.context.hasMap()) return; - this.add_listeners(this._init_marker()); + var marker = this._init_marker(); + console.log("componentDidMount", marker); + if (!marker) return; + this.add_listeners(marker); }, componentWillUpdate () { var {marker} = this.state; - if (marker || !this.context.hasMap()) return; + if (!marker) return; this.clear_listeners(marker); }, componentDidUpdate () { - var {marker} = this.state; - if (!this.context.hasMap()) return; - if (marker) { - marker.setOptions(this.props); - } else { - this.add_listeners(this._init_marker()); - } + var marker = this._init_marker(); + if (!marker) return; + this.add_listeners(marker); + marker.setOptions(this.props); }, componentWillUnmount () { var {marker} = this.state; - if (marker || !this.context.hasMap()) return; + if (!marker) return; this.clear_listeners(marker); + marker.setMap(null); }, render () { @@ -54,11 +53,12 @@ module.exports = React.createClass({ _init_marker () { var {context} = this; - if (this.state.marker || !context.hasMap() || !context.getApi()) { - return; + var {marker} = this.state; + if (marker || !context.hasMap() || !context.getApi()) { + return marker; } var {Marker} = context.getApi(); - var marker = new Marker(this.props); + marker = new Marker(this.props); marker.setMap(context.getMap()); this.expose_getters_from(Marker.prototype, marker);