2016-12-23 5 views
0

Ich benutze google-maps-react und reagiere, um einige Daten auf der Karte anzuzeigen und jetzt bin ich an dem Punkt, wo ich will Tooltip anzeigen, wenn Marker angeklickt oder verschoben wird Dafür denke ich, dass ich 'InfoWindown' Komponente verwenden kann, die mit dem Google-Maps-Reagieren kommt, aber es gibt mir einen Fehler 'Eigenschaft' Requisiten 'von null kann nicht gelesen werden. Uncaught TypeError: Kann Property 'Requisiten' von null in Reagieren mit google-maps nicht lesen

Hier ist mein Code ..

import React, { Component } from 'react'; 
import Map, { Marker, InfoWindow } from 'google-maps-react'; 

export default class GoogleMap extends Component { 
    constructor(props) { 
    super(props); 

    this.state = { 
     showingInfoWindow: false, 
     activeMarker: {}, 
     selectedPlace: {} 
    }; 

    this.renderTrucks = this.renderTrucks.bind(this); 
    this.onMarkerClick = this.onMarkerClick.bind(this); 
    } 

    onMarkerClick(props, marker, e) { 
    this.setState({ 
     selectedPlace: props, 
     activeMarker: marker 
    }); 
    } 

    renderTrucks() { 
    if (this.props.list.length === 0) { 
     return; 
    } 
    return this.props.list.map((truckInfo) => { 
     return (<Marker 
     key={truckInfo.objectid} 
     name={truckInfo.applicant} 
     onClick={this.onMarkerClick} 
     position={{lat:truckInfo.latitude, lng:truckInfo.longitude}} /> 
    ); 
    }); 
    } 


    render() { 
    return (
     <Map google={window.google} 
     className={'map'} 
     style={{width: '50%', height: '80%', position: 'relative'}} 
     zoom={13}> 
     {this.renderTrucks()} 

     <InfoWindow 
      marker={this.state.activeMarker} 
      visible={this.state.showingInfoWindow}> 
      <p>{this.state.selectedPlace.name}</p> 
     </InfoWindow>   
     </Map> 
    ); 
    } 
} 

Ich denke, alle meine Callback-Funktionen sind in Ordnung, aber es scheint mir, dass ‚Infofenster‘ Komponente ist derjenige, der mir ein Problem gibt. Kann jemand dieses Ding benutzen?

Danke,

+0

Welche Linie führt den Fehler? Überprüfen Sie die Konsole und es sollte sagen. –

+0

Ich schaute auf meine bundle.js und es war 'var requiss = _assign ({}, element.props);' was ich nicht wirklich verstehe, was es ist .. Scheint mir, dass es ein Webpack-Ding ist .. – ckim16

+0

Aber welche Zeile Ihres Codes wirft den Fehler? Über zuweisen: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign – nightlyop

Antwort

1

Ich nehme das Problem mit onClick={this.onMarkerClick} ist. this im Callback ist nicht das Gleiche wie außerhalb davon.

Funktioniert es, wenn Sie den folgenden Code verwenden, um die onClick-Eigenschaft für den Marker festzulegen?

onClick={(props, marker, e) => this.onMarkerClick(props, marker, e)} 

Mehr über Pfeil Funktionen: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

An arrow function does not create its own this context, so this has the original meaning from the enclosing context.

+0

Nein gibt mir den gleichen Fehler :( – ckim16

Verwandte Themen