J'essaie d'ajouter un composant React map à mon projet mais je me heurte à une erreur. J'utilise le composant React de Fullstack. article de blog comme référence. J'ai trouvé l'origine de l'erreur dans google_map.js ligne 83 :
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
Voici le composant de ma carte jusqu'à présent. La page se charge très bien (sans carte) lorsque je commente les lignes 58-60, les trois dernières lignes. edit : J'ai fait les changements suggérés par @Dmitriy Nevzorov et cela me donne toujours la même erreur.
import React from 'react'
import GoogleApiComponent from 'google-map-react'
export class LocationsContainer extends React.Component {
constructor() {
super()
}
render() {
const style = {
width: '100vw',
height: '100vh'
}
return (
<div style={style}>
<Map google={this.props.google} />
</div>
)
}
}
export class Map extends React.Component {
componentDidUpdate(prevProps, prevState){
if (prevProps.google !== this.props.google){
this.loadMap();
}
}
componentDidMount(){
this.loadMap();
}
loadMap(){
if (this.props && this.props.google){
const {google} = this.props;
const maps = google.maps;
const mapRef = this.refs.map;
const node = ReactDOM.findDOMNode(mapRef);
let zoom = 14;
let lat = 37.774929
let lng = 122.419416
const center = new maps.LatLng(lat, lng);
const mapConfig = Object.assign({}, {
center: center,
zoom: zoom
})
this.map = new maps.Map(node, mapConfig)
}
}
render() {
return (
<div ref='map'>
Loading map...
</div>
)
}
}
export default GoogleApiComponent({
apiKey: MY_API_KEY
})(LocationsContainer)
Et voici où ce composant de carte est acheminé dans main.js :
import {render} from 'react-dom';
import React from 'react';
import Artists from './components/Artists'
import { Router, Route, Link, browserHistory } from 'react-router'
import Home from './components/HomePage'
import Gallery from './components/ArtGallery'
import ArtistPage from './components/ArtistPage'
import FavsPage from './components/FavsPage'
import LocationsContainer from './components/Locations'
//Create the route configuration
render((
<Router history={browserHistory}>
<Route path="/" component={Home} />
<Route path="locations" component={LocationsContainer} />
<Route path="artists" component={Artists} />
<Route path="gallery" component={Gallery} />
<Route path="favorites" component={FavsPage} />
<Route path=":artistName" component={ArtistPage} />
</Router>
), document.getElementById('app'))
3 votes
Vous avez deux
export default
et serait-ilnew GoogleAPIComponent()
pasGoogleAPIComponent()
?0 votes
J'ai supprimé une des valeurs par défaut et j'ai essayé votre suggestion. Il semble qu'il communique maintenant avec Google Maps, ce qui est une bonne chose, mais avant que la page ne puisse se charger, une autre erreur énigmatique se produit : Locations.js:58 Uncaught TypeError : (valeur intermédiaire) n'est pas une fonction". Une idée ?
1 votes
Et si vous retirez le
(LocationContainer)
?0 votes
Merci, je crois que c'est bon ! Bizarre, c'est comme ça qu'ils l'ont écrit sur leur blog. Je reçois toujours quelques autres erreurs de Google Maps, je vais les mettre ici : 'GoogleMap : apiKey is deprecated, use bootstrapURLKeys={{key : YOUR_API_KEY}} à la place. google_map.js:689 GoogleMap : center ou defaultCenterproperty doit être défini google_map.js:699 GoogleMap : zoom ou defaultZoomproperty doit être défini google_map.js : 704''.
1 votes
Je ne suis pas sûr pour les autres erreurs, mais vous pouvez essayer ceci pour réparer la première :
export default new GoogleApiComponent({ bootstrapURLKeys: MY_API_KEY })
0 votes
Merci, c'est réglé. J'ai rencontré d'autres problèmes avec ce dépôt qui ne pouvait pas bien s'intégrer dans le projet existant et l'API. React-Gmap à la place. J'ai passé environ une journée à utiliser ce dépôt et en une heure, j'avais l'autre dépôt opérationnel. Merci encore pour toute votre aide !
0 votes
Vérifiez que vous n'avez pas
new
en essayant d'initier une classe