Se mettre “Ne peut pas appeler à une classe de fonction” dans mon Réagir Projet

J'essaye d'ajouter une Réagir la carte de la composante à mon projet, mais une erreur. Je suis en utilisant Fullstack Réagir de post de blog comme une référence. J'ai traqué où l'erreur est lancée 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 ma carte composant jusqu'à présent. La page se charge très bien (sans carte) quand j'en commentaire les lignes 58-60, les trois dernières lignes. edit: j'ai fait les modifications que @Dmitriy Nevzorov a suggéré et il 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 c'est là où cette carte composant est routée en 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'))
  • Vous avez deux export defaults, et serait-il new GoogleAPIComponent() pas GoogleAPIComponent()?
  • J'ai enlevé un des défauts et essayer votre suggestion. On dirait qu'il parle de Google Maps maintenant, ce qui est bon, mais avant que la page ne peut charger il jette une autre erreur cryptique: Emplacements.js:58 Uncaught TypeError: (valeur intermédiaire) n'est pas une fonction". Des idées?
  • Si vous retirez le (LocationContainer)?
  • Merci, je pense que je l'ai! Bizarre, c'est comment ils ont écrit sur leur blog. Encore quelques autres erreurs de Google Maps, je vais les mettre ici: 'GoogleMap: apiKey est obsolète, utilisez bootstrapURLKeys={{clé: YOUR_API_KEY}} à la place. google_map.js:689 GoogleMap: centre ou defaultCenterproperty doit être défini google_map.js:699 GoogleMap: zoom ou defaultZoomproperty doit être défini google_map.js: 704'
  • Je ne suis pas sûr que sur les autres erreurs, mais vous pouvez essayer ce pour corriger le premier: export default new GoogleApiComponent({ bootstrapURLKeys: MY_API_KEY })
  • Merci, qui a pris soin de cela. J'ai couru dans des problèmes plus avec ce repo de ne pas être en mesure de maille bien avec le projet existant et de l'API, j'ai donc mis au rebut et utilisé Réagissent-Gmap à la place. J'ai passé une journée à l'aide de ce repo et à moins d'une heure j'ai eu l'autre et en cours d'exécution. Merci encore à tous pour votre aide!
  • Vérifiez que vous êtes absent new lorsque vous essayez de lancer une classe

InformationsquelleAutor Mike Fleming | 2016-07-20